7

是否可以在没有额外副本的情况下使用 NumPy 多维数组执行最小/最大就地分配?

aandb是两个 2D numpy 数组,我想a[i,j] = min(a[i,j], b[i,j])为所有iand j.

一种方法是:

a = numpy.minimum(a, b)

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

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

所以在上面的代码中,它会创建一个新的临时数组(a和的最小值b),然后将它分配给a并处置它,对吧?

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

4

1 回答 1

11

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]])
于 2013-01-20T19:13:38.007 回答