是否可以在没有额外副本的情况下使用NumPy多维数组执行最小/最大就地分配?
假设a
和b
是两个2D numpy数组,我想为所有a[i,j] = min(a[i,j], b[i,j])
和i
使用j
。
一种方法是:
a = numpy.minimum(a, b)
但是根据文档,
numpy.minimum
创建并返回一个新数组:因此,在上面的代码中,它将创建一个新的临时数组(
a
和b
的最小值),然后将其分配给a
并进行处理,对吗?有什么办法可以做类似于
a.min_with(b)
的操作,以便将最小结果就地分配回a
? 最佳答案
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]])
关于python - NumPy最小/最大就地分配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14428183/