numpy.array#

numpy.array(object, dtype=None, *, copy=True, order='K', subok=False, ndmin=0, ndmax=0, like=None)#

创建一个数组。

参数:
objectarray_like

数组、任何公开数组接口的对象、其 __array__ 方法返回数组的对象,或任何(嵌套的)序列。如果 object 是标量,则返回一个包含该对象的 0 维数组。

dtype数据类型,可选

数组所需的数据类型。如果未给定,NumPy 将尝试使用能够表示这些值的默认 dtype(必要时应用提升规则)。

copybool, optional

如果为 True(默认值),则会复制数组数据。如果为 None,则仅在以下情况下进行复制:__array__ 返回一个副本、obj 是嵌套序列,或者为了满足其他要求(dtypeorder 等)而需要副本时。注意,任何数据复制都是浅拷贝,即对于对象 dtype 的数组,新数组将指向相同的对象。参见 ndarray.copy 的示例。如果为 False,若无法避免复制,则会引发 ValueError。默认值:True

order{‘K’, ‘A’, ‘C’, ‘F’}, 可选

指定数组的内存布局。如果 object 不是数组,则新创建的数组将采用 C 顺序(行优先),除非指定了 ‘F’,此时它将采用 Fortran 顺序(列优先)。如果 object 是数组,则适用以下规则。

order

无复制

copy=True

‘K’

保持不变

保留 F 和 C 顺序,否则采用最相似的顺序

‘A’

保持不变

如果输入是 F 且不是 C,则为 F 顺序,否则为 C 顺序

‘C’

C 顺序

C 顺序

‘F’

F 顺序

F 顺序

copy=None 且由于其他原因进行复制时,结果与 copy=True 时相同,但 ‘A’ 有些例外,参见“注释”部分。默认顺序为 ‘K’。

subokbool, optional

如果为 True,则传递子类,否则强制返回的数组为基类数组(默认)。

ndminint, optional

指定结果数组应具有的最小维数。根据需要将在 shape 前面添加 1 以满足此要求。

ndmaxint, 可选

指定从嵌套序列推断 shape 时要创建的最大维数。默认情况下 (ndmax=0),NumPy 会递归遍历所有嵌套级别(直到编译时常量 NPY_MAXDIMS)。设置 ndmax 会在指定深度停止递归,将更深层的嵌套结构保留为对象,而不是将其提升为高维数组。在这种情况下,需要 dtype=np.object_

2.4.0 版本新增。

likearray_like, optional

用于创建非 NumPy 数组的引荐对象。如果传入的 like 支持 __array_function__ 协议,则结果将由它定义。在这种情况下,它确保创建与通过此参数传入的数组兼容的数组对象。

版本 1.20.0 中新增。

返回:
outndarray

满足指定要求的数组对象。

另请参阅

empty_like

返回一个形状和类型与输入数组相同的空数组。

ones_like

返回一个形状和类型与输入相同的全 1 数组。

zeros_like

返回一个形状和类型与输入相同的全 0 数组。

full_like

返回一个形状与输入相同、并用值填充的新数组。

empty

返回一个新的未初始化数组。

ones

返回一个新数组,将值设置为一。

zeros

返回一个新数组,将值设置为零。

full

返回一个给定形状并用指定值填充的新数组。

copy

返回给定对象的数组副本。

备注

当 order 为 ‘A’ 且 object 为既不是 ‘C’ 也不是 ‘F’ 顺序的数组,且由于 dtype 改变而强制复制时,结果的顺序不一定是预期的 ‘C’。这很可能是一个 bug。

示例

>>> import numpy as np
>>> np.array([1, 2, 3])
array([1, 2, 3])

向上转型

>>> np.array([1, 2, 3.0])
array([ 1.,  2.,  3.])

超过一维

>>> np.array([[1, 2], [3, 4]])
array([[1, 2],
       [3, 4]])

最小维度为 2

>>> np.array([1, 2, 3], ndmin=2)
array([[1, 2, 3]])

提供类型

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

由多个元素组成的数据类型

>>> x = np.array([(1,2),(3,4)],dtype=[('a','<i4'),('b','<i4')])
>>> x['a']
array([1, 3], dtype=int32)

从子类创建数组

>>> np.array(np.asmatrix('1 2; 3 4'))
array([[1, 2],
       [3, 4]])
>>> np.array(np.asmatrix('1 2; 3 4'), subok=True)
matrix([[1, 2],
        [3, 4]])

使用 ndmax 限制最大维度

>>> a = np.array([[1, 2], [3, 4]], dtype=np.object_, ndmax=2)
>>> a
array([[1, 2],
       [3, 4]], dtype=object)
>>> a.shape
(2, 2)
>>> b = np.array([[1, 2], [3, 4]], dtype=np.object_, ndmax=1)
>>> b
array([list([1, 2]), list([3, 4])], dtype=object)
>>> b.shape
(2,)