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

假设ab是两个2D numpy数组,我想为所有a[i,j] = min(a[i,j], b[i,j])i使用j

一种方法是:

a = numpy.minimum(a, b)

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



因此,在上面的代码中,它将创建一个新的临时数组(ab的最小值),然后将其分配给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/

10-09 07:51
查看更多