NumPy中narray和array的区别是什么?



NumPy中ndarrayarray的区别是什么?它们在NumPy源代码中的实现在哪里?

numpy.array只是创建ndarray的方便函数;它本身并不是一个类。

您也可以使用numpy.ndarray创建数组,但这不是推荐的方法。来自numpy.ndarray的文档字符串:

数组应该使用array, zerosempty…这里给出的参数是指a用于实例化数组的低级方法(ndarray(...))。

实现的大部分内容都是用C代码编写的,这里是multiarray,但你可以从这里开始看narray接口:

https://github.com/numpy/numpy/blob/master/numpy/core/numeric.py

numpy.array是返回numpy.ndarray对象的函数。

没有numpy.array类型的对象

只是几行示例代码来显示numpy和numpy之间的区别。Array和numpy. narray

热身步骤:构造列表

a = [1,2,3]

检查类型

print(type(a))

你会得到

<class 'list'>

使用np.array

构造一个数组(从列表中)
a = np.array(a)

或者,您可以跳过预热步骤,直接使用

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

检查类型

print(type(a))

你会得到

<class 'numpy.ndarray'>

告诉你 numpy数组的类型是numpy. narray

也可以通过

检查类型
isinstance(a, (np.ndarray))

得到

True

下面两行中的任何一行都会给你一个错误消息

np.ndarray(a)                # should be np.array(a)
isinstance(a, (np.array))    # should be isinstance(a, (np.ndarray))

numpy.ndarray()是一个类,而numpy.array()是创建ndarray的方法/函数。

在numpy文档中,如果你想从ndarray类创建一个数组,你可以用两种方法来做,如引号所示:

1-使用array(), zeros()empty()方法:数组应该使用array、0或空来构造(请参阅下面的"参考"部分)。这里给出的参数引用了用于实例化数组的低级方法(ndarray(…))。

2- from ndarray class direct:使用__new__创建数组有两种模式:如果buffer为None,则只使用shape, dtype和order。如果buffer是一个暴露缓冲区接口的对象,则解释所有关键字。

下面的例子给出了一个随机数组,因为我们没有分配缓冲区值:

np.ndarray(shape=(2,2), dtype=float, order='F', buffer=None)
array([[ -1.13698227e+002,   4.25087011e-303],
       [  2.88528414e-306,   3.27025015e-309]])         #random

另一个例子是将数组对象赋值给缓冲区例子:

>>> np.ndarray((2,), buffer=np.array([1,2,3]),
...            offset=np.int_().itemsize,
...            dtype=int) # offset = 1*itemsize, i.e. skip first element
array([2, 3])
从上面的例子中,我们注意到我们不能将列表赋值给"buffer",我们必须使用numpy.array()来返回缓冲区的narray对象

结论:如果你想做一个numpy.ndarray()对象,使用numpy.array() "

我认为与np.array()你只能创建C虽然你提到的顺序,当你使用np.isfortran()检查它说假。但是对于np.ndarrray(),当您指定它根据所提供的顺序创建的顺序时。

相关内容

  • 没有找到相关文章

最新更新