本文代码均在Python环境下运行。
import numpy as np
官网文档
numpy.array();numpy.asarray()
array()
用法
numpy.array(object, dtype=None, *, copy=True, order=‘K’, subok=False, ndmin=0, like=None)
功能
创建一个数组
参数Parameter
- object : array_like
输入数据,可以转换为数组的任何形式。这包括列表,元组列表,元组,元组元组,列表元组和ndarray。
- dtype : data-type, optional
默认情况下,从输入数据中推断出数据类型。
- copy : bool, optional
如果为true(默认值),则复制对象。否则,只有当__array__返回一个副本,obj是一个嵌套序列,或者需要复制以满足任何其他要求(dtype, order等)时,才会进行复制。
- order : {‘K’, ‘A’, ‘C’, ‘F’}, optional
是使用行优先(C-style)还是列主要(Fortran-style)内存表示形式。默认为“ C”。
- subok : bool, optional
If True, then sub-classes will be passed-through, otherwise the returned array will be forced to be a base-class array (default).
- ndmin : int, optional
指定结果数组应具有的最小维数。将根据需要在形状上添加一个以满足此要求。
- like : array_like, optional
Reference object to allow the creation of arrays which are not NumPy arrays. If an array-like passed in as like supports the array_function protocol, the result will be defined by it. In this case, it ensures the creation of an array object compatible with that passed in via this argument.
- out : ndarray
满足指定要求的数组对象。如果输入已经是具有匹配dtype和顺序的ndarray,则不执行复制。如果arr是ndarray的子类,则返回基类ndarray。
示例Examples
>>> np.array([1, 2, 3])
array([1, 2, 3])
>>> np.array([[1, 2], [3, 4]])
array([[1, 2],
[3, 4]])
>>> 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])
asarray()
用法
numpy.asarray(a, dtype=None, order=None, *, like=None)
功能
将输入转换为数组。
参数Parameter
- a : array_like
输入数据,可以转换为数组的任何形式。这包括列表,元组列表,元组,元组元组,列表元组和ndarray。
- dtype : data-type, optional
默认情况下,从输入数据中推断出数据类型。
- order : {‘C’, ‘F’, ‘A’, ‘K’}, optional
是使用行优先(C-style)还是列主要(Fortran-style)内存表示形式。默认为“ C”。
- like : array_like, optional
确保创建的数组对象与通过该参数传入的数组对象兼容。
示例Examples
将列表转换为数组:
>>> a = [1, 2]
>>> np.asarray(a)
array([1, 2])
已存在的array没有被复制。
>>> a = np.array([1, 2])
>>> np.asarray(a) is a
True
如果设置了dtype,只在dtype不匹配的情况下复制数组:
>>> a = np.array([1, 2], dtype=np.float32)
>>> np.asarray(a, dtype=np.float32) is a
True
>>> np.asarray(a, dtype=np.float64) is a
False
array()与asarray()的区别
np.asarray() 和 np.array() 都可以用来创建 NumPy 数组。
两者之间的主要区别在于,如果输入已经是 NumPy 数组,np.asarray() 将不会创建一个新数组,而 np.array() 即使输入已经是 NumPy 数组也会创建一个新数组。因此,当你想要确保给定的输入是 NumPy 数组时,可以使用 np.asarray()。可以避免不必要的内存分配和复制。
另一方面,当你想从给定的输入创建一个新的 NumPy 数组时,可以使用 np.array(),而不管它是否已经是一个NumPy数组。