numpy.array#
- numpy.array(object, dtype=None, *, copy=True, order='K', subok=False, ndmin=0, ndmax=0, like=None)#
创建数组。
- 参数:
- objectarray_like
一个数组,任何暴露数组接口的对象,`__array__` 方法返回数组的对象,或任何(嵌套的)序列。如果 object 是标量,则返回一个包含 object 的 0 维数组。
- dtype数据类型,可选
期望的数组数据类型。如果未给出,NumPy 将尝试使用可以表示这些值的默认 `dtype`(在必要时通过应用提升规则)。
- copybool, optional
如果为 `True`(默认),则复制数组数据。如果为 `None`,只有当 `__array__` 返回副本,或者当 obj 是嵌套序列,或者需要副本以满足其他任何要求(`dtype`、`order` 等)时,才会进行复制。请注意,任何数据复制都是浅复制,即对于具有 object dtype 的数组,新数组将指向相同的对象。请参阅 `ndarray.copy` 的示例。如果为 `False`,则在无法避免复制时会引发 `ValueError`。默认值:`True`。
- order{‘K’, ‘A’, ‘C’, ‘F’}, optional
指定数组的内存布局。如果 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
指定结果数组应具有的最小维度数。会根据需要将 1 添加到形状的前面以满足此要求。
- ndmaxint, optional
指定从嵌套序列推断形状时要创建的最大维度数。默认情况下(ndmax=0),NumPy 会递归到所有嵌套级别(直到编译时常量 `NPY_MAXDIMS`)。将 `ndmax` 设置为指定深度会停止递归,将更深的嵌套结构保留为对象,而不是提升为更高维度的数组。在这种情况下,需要 `dtype=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=complex) 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=object, ndmax=2) >>> a array([[1, 2], [3, 4]], dtype=object) >>> a.shape (2, 2)
>>> b = np.array([[1, 2], [3, 4]], dtype=object, ndmax=1) >>> b array([list([1, 2]), list([3, 4])], dtype=object) >>> b.shape (2,)