NumPy 数组创建

2021-11-06 17:33 更新

数组创建

有几种方法可以创建数组。

例如,可以使用array函数从常规 Python 列表或元组创建数组。结果数组的类型是从序列中元素的类型推导出来的。

  1. >>> import numpy as np
  2. >>> a = np.array([2, 3, 4])
  3. >>> a
  4. array([2, 3, 4])
  5. >>> a.dtype
  6. dtype('int64')
  7. >>> b = np.array([1.2, 3.5, 5.1])
  8. >>> b.dtype
  9. dtype('float64')

一个常见的错误在于array使用多个参数调用,而不是提供单个序列作为参数。

  1. >>> a = np.array(1, 2, 3, 4) # WRONG
  2. Traceback (most recent call last):
  3. ...
  4. TypeError: array() takes from 1 to 2 positional arguments but 4 were given
  5. >>> a = np.array([1, 2, 3, 4]) # RIGHT

array 将序列的序列转换为二维数组,将序列的序列的序列转换为三维数组,依此类推。

  1. >>> b = np.array([(1.5, 2, 3), (4, 5, 6)])
  2. >>> b
  3. array([[1.5, 2. , 3. ],
  4. [4. , 5. , 6. ]])

数组的类型也可以在创建时显式指定:

  1. >>> c = np.array([[1, 2], [3, 4]], dtype=complex)
  2. >>> c
  3. array([[1.+0.j, 2.+0.j],
  4. [3.+0.j, 4.+0.j]])

通常,数组的元素最初是未知的,但其大小是已知的。因此,NumPy 提供了几个函数来创建具有初始占位符内容的数组。这些最大限度地减少了增长阵列的必要性,这是一项昂贵的操作。

该函数zeros创建一个全零数组,该函数 ones创建一个全1数组,该函数empty 创建一个初始内容随机且取决于内存状态的数组。默认情况下,创建的数组的 dtype 是 float64,但可以通过关键字参数指定dtype

  1. >>> np.zeros((3, 4))
  2. array([[0., 0., 0., 0.],
  3. [0., 0., 0., 0.],
  4. [0., 0., 0., 0.]])
  5. >>> np.ones((2, 3, 4), dtype=np.int16)
  6. array([[[1, 1, 1, 1],
  7. [1, 1, 1, 1],
  8. [1, 1, 1, 1]],
  9. [[1, 1, 1, 1],
  10. [1, 1, 1, 1],
  11. [1, 1, 1, 1]]], dtype=int16)
  12. >>> np.empty((2, 3))
  13. array([[3.73603959e-262, 6.02658058e-154, 6.55490914e-260], # may vary
  14. [5.30498948e-313, 3.14673309e-307, 1.00000000e+000]])

为了创建数字序列,NumPy 提供了arange类似于 Python 内置的函数range,但返回一个数组。

  1. >>> np.arange(10, 30, 5)
  2. array([10, 15, 20, 25])
  3. >>> np.arange(0, 2, 0.3) # it accepts float arguments
  4. array([0. , 0.3, 0.6, 0.9, 1.2, 1.5, 1.8])

arange与浮点参数一起使用时,由于浮点精度有限,通常无法预测获得的元素数量。出于这个原因,通常最好使用linspace接收我们想要的元素数量作为参数的函数,而不是步骤:

  1. >>> from numpy import pi
  2. >>> np.linspace(0, 2, 9) # 9 numbers from 0 to 2
  3. array([0. , 0.25, 0.5 , 0.75, 1. , 1.25, 1.5 , 1.75, 2. ])
  4. >>> x = np.linspace(0, 2 * pi, 100) # useful to evaluate function at lots of points
  5. >>> f = np.sin(x)
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号