是否可以使用NumPy多维数组执行最小/最大就地分配而无需额外的副本?
说,a
和b
是两个2D numpy数组,我希望所有a[i,j] = min(a[i,j], b[i,j])
和i
都有j
。
一种方法是:
a = numpy.minimum(a, b)
但根据文档,numpy.minimum
创建并返回一个新数组:
numpy.minimum(x1,x2 [,out])
元素最小的数组元素。
比较两个数组并返回一个包含元素最小值的新数组。
所以在上面的代码中,它会创建一个新的临时数组(min a
和b
),然后将其分配给a
并处理它,对吗?
有没有办法执行a.min_with(b)
之类的操作,以便将最小结果分配回a
就地?
答案 0 :(得分: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]])