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

Numpy的array()和asarray()函数有什么区别?,第1张

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

由于将其他问题重定向到这个询问问题

asanyarray
或其他数组创建例程的问题,因此可能有必要简要概述每个问题的作法。

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

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

假设

a
ndarray
,并且
m
matrix
,他们都拥有
dtype
float32

  • 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)
    不会复制任何内容,因为
    m
    matrix
    ,这是的子类
    ndarray
  • np.array(a, dtype=int, copy=False, subok=True)
    将同时复制两者,因为与
    dtype
    不兼容。

其他大多数功能都是

array
在复制发生时围绕该控件的薄包装器:

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

还有一些便利功能,例如

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



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5643708.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存