Python 在numpy中,ndarray和array有什么区别?
Numpy中的Python 在numpy中,ndarray和array有什么区别?,python,arrays,numpy,multidimensional-array,numpy-ndarray,Python,Arrays,Numpy,Multidimensional Array,Numpy Ndarray,Numpy中的ndarray和array之间有什么区别?在numpy源代码中哪里可以找到实现?numpy.array是一个返回numpy.ndarray的函数。没有对象类型numpy.array。numpy.array只是创建ndarray的一个方便函数;它本身不是一个类 您也可以使用numpy.ndarray创建数组,但这不是推荐的方法。从numpy.ndarray的文档字符串: 数组应使用数组、零或空。。。这里给出的参数是指 用于实例化数组的低级方法(ndarray(…)) 实现的大部分内容
ndarray
和array
之间有什么区别?在numpy源代码中哪里可以找到实现?numpy.array
是一个返回numpy.ndarray
的函数。没有对象类型numpy.array。numpy.array
只是创建ndarray
的一个方便函数;它本身不是一个类
您也可以使用numpy.ndarray
创建数组,但这不是推荐的方法。从numpy.ndarray
的文档字符串:
数组应使用数组
、零
或空
。。。这里给出的参数是指
用于实例化数组的低级方法(ndarray(…)
)
实现的大部分内容都是C代码,但您可以从这里开始查看ndarray接口:
只需几行示例代码即可显示numpy.array和numpy.ndarray之间的差异 热身步骤:构建一个列表
a = [1,2,3]
检查类型
print(type(a))
print(type(a))
你会得到
<class 'list'>
<class 'numpy.ndarray'>
或者,您可以跳过热身步骤,直接进行热身
a = np.array([1,2,3])
检查类型
print(type(a))
print(type(a))
你会得到
<class 'list'>
<class 'numpy.ndarray'>
你会得到
True
以下两行中的任何一行都将显示错误消息
np.ndarray(a) # should be np.array(a)
isinstance(a, (np.array)) # should be isinstance(a, (np.ndarray))
我认为使用
np.array()
只能创建C,尽管您提到了顺序,但当您使用np.isfortran()
检查时,它会显示false。但是,当您指定它基于提供的订单创建的订单时,请使用np.ndarrray()
numpy.ndarray()
是一个类,而numpy.array()
是一个创建ndarray
的方法/函数
在numpy docs中,如果要从ndarray
类创建数组,可以使用引用的两种方法:
1-使用array()
、zeros()
或empty()
方法:
数组应使用数组、零或空来构造(请参阅下面的另一节)。这里给出的参数是指用于实例化数组的低级方法(ndarray(…)
)
2-直接从ndarray
类:
使用\uuuu new\uuuu
创建数组有两种模式:
如果buffer为None,则只使用shape、dtype和order。
如果buffer是一个公开buffer接口的对象,那么将解释所有关键字
下面的示例给出了一个随机数组,因为我们没有分配缓冲区值:
另一个例子是将数组对象分配给缓冲区
例如:
从上面的示例中,我们注意到我们不能将列表分配给“buffer”,我们必须使用numpy.array()为缓冲区返回ndarray对象
结论:如果您想创建一个
numpy.ndarray()
对象,请使用numpy.ndarray()我认为array()是在in-array_-getarray()中实现的。如果您忘记np.array
不是一个类,就像我经常做的那样,这会对您造成伤害。x=np.array([1,2.1,3])
如果存在(x,np array):#将给您一个类型错误
仍然不知道为什么应该避免使用ndarray?因为它的级别很低?@flxb:no,array\u getarray
是numpy.ndarray的实现。至少在当前的实现中,array\uuu
numpy.array
至少从开始。那么为什么不推荐使用它呢?