Numpy的array()和asarray()函数有什么区别?

发布于 2021-01-29 19:23:11

Numpyarray()asarray()函数之间有什么区别?什么时候应该使用一个而不是另一个?他们似乎为我能想到的所有输入生成了相同的输出。

关注者
0
被浏览
51
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    由于将其他问题重定向到这个询问问题asanyarray其他数组创建例程的问题,因此可能有必要简要概述每个问题的作法。

    区别主要在于何时返回不变的输入,而不是将新数组作为副本。

    array提供多种选择(其他大多数功能都围绕着薄包装纸),包括用于确定何时复制的标志。完整的解释将和文档一样长(请参阅Array
    Creation
    ,但是简要地,这里有一些示例:

    假设andarray,并且mmatrix,他们都拥有dtypefloat32

    • np.array(a)并且np.array(m)将复制两个,因为这是默认行为。
    • np.array(a, copy=False)并且np.array(m, copy=False)将复制m而不是a,因为m不是一个ndarray
    • np.array(a, copy=False, subok=True),并且np.array(m, copy=False, subok=True)不会复制任何内容,因为mmatrix,这是的子类ndarray
    • np.array(a, dtype=int, copy=False, subok=True)将同时复制两者,因为与dtype不兼容。

    其他大多数功能都是array在复制发生时围绕该控件的薄包装器:

    • asarray:如果兼容ndarraycopy=False),则输入将返回未复制的状态。
    • asanyarray:如果输入是兼容ndarray或子类matrix(如copy=Falsesubok=True),则输入将不复制就返回。
    • ascontiguousarray:如果输入是兼容ndarray的连续C顺序(copy=False,,则将返回未复制的输入)order='C')
    • asfortranarray:当且仅当它是一个兼容的输入将被返回未复制ndarray在连续的Fortran顺序(copy=Falseorder='F')。
    • require:如果输入与指定的要求字符串兼容,则输入将不复制而返回。
    • copy:总是复制输入。
    • fromiter:输入被视为可迭代的(例如,您可以从迭代器的元素构造一个数组,而不是object使用迭代器的数组);始终复制。

    还有一些便利功能,例如asarray_chkfinite(与复制规则相同asarray,但复制规则与相同,但ValueError如果有naninf值,则会提高),以及子类的构造函数(例如matrix或特殊情况下的记录数组),当然还有实际的ndarray构造函数(可让您直接创建数组)超出缓冲区)。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看