Numpy asanyarray 与 asarray 的任何示例?

Cra*_*ien 8 python numpy machine-learning data-science

我在找一些例子显示之间的差异numpy.asanyarray()numpy.asarray()?在什么情况下我应该专门使用 asanyarray()?

hpa*_*ulj 7

代码asanyarray

return array(a, dtype, copy=False, order=order, subok=True)
Run Code Online (Sandbox Code Playgroud)

对于asarray

return array(a, dtype, copy=False, order=order)
Run Code Online (Sandbox Code Playgroud)

唯一的区别在于指定subok参数。如果您正在使用ndarray您可能想要使用它的子类。如果你不知道这意味着什么,那可能没有关系。

默认值为np.array

array(object, dtype=None, copy=True, order='K', subok=False, ndmin=0)
Run Code Online (Sandbox Code Playgroud)

如果您正在微调一个函数,该函数应该适用于所有类型的 numpy 数组(以及可以制成数组的列表),并且不应该制作不必要的副本,则可以使用这些函数之一。否则np.array,无论有没有额外的参数,都可以正常工作。作为初学者,不要花太多精力去理解这些差异。

===

expand_dims 两者都使用:

if isinstance(a, matrix):
    a = asarray(a)
else:
    a = asanyarray(a)
Run Code Online (Sandbox Code Playgroud)

np.matrix亚类阵列只能有2个维度,但expand_dims必须改变这一点,所以使用asarray把输入到常规ndarray。否则它使用asanyarray. 这样像 maskedArray 这样的子类仍然是那个类。

In [158]: np.expand_dims(np.eye(2),1)                                           
Out[158]: 
array([[[1., 0.]],

       [[0., 1.]]])
In [159]: np.expand_dims(np.matrix(np.eye(2)),1)                                
Out[159]: 
array([[[1., 0.]],

       [[0., 1.]]])
In [160]: np.expand_dims(np.ma.masked_array(np.eye(2)),1)                       
Out[160]: 
masked_array(
  data=[[[1., 0.]],

        [[0., 1.]]],
  mask=False,
  fill_value=1e+20)
Run Code Online (Sandbox Code Playgroud)