numpy.asarray#

numpy.asarray(a, dtype=None, order=None, *, device=None, copy=None, like=None)#

将输入转换为数组。

参数:
a数组类型

输入数据,可以是任何可转换为数组的形式。这包括列表、元组列表、元组、元组的元组、列表的元组和 ndarray。

dtype数据类型,可选

默认情况下,数据类型会从输入数据中推断。

order{'C', 'F', 'A', 'K'},可选

内存布局。'A' 和 'K' 取决于输入数组 a 的顺序。'C' 表示行主序(C 风格),'F' 表示列主序(Fortran 风格)内存表示。'A'(任意)表示如果 a 是 Fortran 连续的则为 'F',否则为 'C';'K'(保持)保留输入顺序。默认为 'K'。

device字符串,可选

创建数组所放置的设备。默认值:None。仅用于数组 API 互操作性,因此如果传入,必须是 "cpu"

2.0.0 版本新增。

copy布尔值,可选

如果为 True,则复制对象。如果为 None,则仅在需要时复制对象,即如果 __array__ 返回副本,如果 obj 是嵌套序列,或者需要复制以满足任何其他要求(dtypeorder 等)。如果为 False 且无法避免复制,则会引发 ValueError。默认值:None

2.0.0 版本新增。

like数组类型,可选

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

1.20.0 版本新增。

返回:
outndarray

a 的数组解释。如果输入已经是具有匹配 dtype 和 order 的 ndarray,则不执行复制。如果 a 是 ndarray 的子类,则返回基类 ndarray。

另请参阅

asanyarray

类似函数,但会通过子类。

ascontiguousarray

将输入转换为连续数组。

asfortranarray

将输入转换为列主序内存排列的 ndarray。

asarray_chkfinite

类似函数,但会检查输入中的 NaN 和 Inf。

fromiter

从迭代器创建数组。

fromfunction

通过在网格位置执行函数来构造数组。

示例

将列表转换为数组

>>> a = [1, 2]
>>> import numpy as np
>>> np.asarray(a)
array([1, 2])

现有数组不被复制

>>> a = np.array([1, 2])
>>> np.asarray(a) is a
True

如果设置了 dtype,则仅在 dtype 不匹配时复制数组

>>> a = np.array([1, 2], dtype=np.float32)
>>> np.shares_memory(np.asarray(a, dtype=np.float32), a)
True
>>> np.shares_memory(np.asarray(a, dtype=np.float64), a)
False

asanyarray 不同,ndarray 子类不会被直接通过

>>> issubclass(np.recarray, np.ndarray)
True
>>> a = np.array([(1., 2), (3., 4)], dtype='f4,i4').view(np.recarray)
>>> np.asarray(a) is a
False
>>> np.asanyarray(a) is a
True