NumPy最小/最大就地分配

alv*_*eko 6 python numpy

是否可以使用NumPy多维数组执行最小/最大就地分配而无需额外的副本?

说,a并且b是两个2D numpy阵列,我想拥有a[i,j] = min(a[i,j], b[i,j])所有ij.

一种方法是:

a = numpy.minimum(a, b)
Run Code Online (Sandbox Code Playgroud)

但根据文档,numpy.minimum创建并返回一个新数组:

numpy.minimum(x1,x2 [,out])
元素最小的数组元素.
比较两个数组并返回一个包含元素最小值的新数组.

所以在上面的代码中,它将创建一个新的临时数组(min of ab),然后将其分配a并处理它,对吧?

有没有办法做这样的事情,a.min_with(b)以便将最小结果分配回a原位?

NPE*_*NPE 9

numpy.minimum()采用可选的第三个参数,即输出数组.您可以指定a在那里修改它:

In [9]: a = np.array([[1, 2, 3], [2, 2, 2], [3, 2, 1]])

In [10]: b = np.array([[3, 2, 1], [1, 2, 1], [1, 2, 1]])

In [11]: np.minimum(a, b, a)
Out[11]: 
array([[1, 2, 1],
       [1, 2, 1],
       [1, 2, 1]])

In [12]: a
Out[12]: 
array([[1, 2, 1],
       [1, 2, 1],
       [1, 2, 1]])
Run Code Online (Sandbox Code Playgroud)