Numpy asanyarray 与 asarray 的任何示例?

Posted

技术标签:

【中文标题】Numpy asanyarray 与 asarray 的任何示例?【英文标题】:Any examples for Numpy asanyarray vs asarray? 【发布时间】:2020-04-08 13:07:19 【问题描述】:

我正在寻找一些例子来说明numpy.asanyarray()numpy.asarray() 之间的区别?在什么条件下我应该专门使用 asanyarray()?

【问题讨论】:

【参考方案1】:

asanyarray 的代码:

return array(a, dtype, copy=False, order=order, subok=True)

对于asarray

return array(a, dtype, copy=False, order=order)

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

np.array 的默认值为:

array(object, dtype=None, copy=True, order='K', subok=False, ndmin=0)

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

===

expand_dims 两者都使用:

if isinstance(a, matrix):
    a = asarray(a)
else:
    a = asanyarray(a)

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)

【讨论】:

以上是关于Numpy asanyarray 与 asarray 的任何示例?的主要内容,如果未能解决你的问题,请参考以下文章

如何对 NumPy 数组执行逐元素布尔运算 [重复]

gradient函数

numpy:矩阵定义与索引

Numpy与Panda简介

与 numpy.eye 相比,使用 numpy.identity 有啥优势?

numpy.random 与 numpy.random.Generate 有啥区别