由于将其他问题重定向到这个询问问题
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构造函数(可让您直接创建数组)超出缓冲区)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)