是否可以使用NumPy多维数组执行最小/最大就地分配而无需额外的副本?
说,a并且b是两个2D numpy阵列,我想拥有a[i,j] = min(a[i,j], b[i,j])所有i和j.
一种方法是:
a = numpy.minimum(a, b)
Run Code Online (Sandbox Code Playgroud)
但根据文档,numpy.minimum创建并返回一个新数组:
numpy.minimum(x1,x2 [,out])
元素最小的数组元素.
比较两个数组并返回一个包含元素最小值的新数组.
所以在上面的代码中,它将创建一个新的临时数组(min of 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]])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1240 次 |
| 最近记录: |