我有一个相当大的矩阵(500000 * 24)作为ndarray
,我想将其单元格与相应的列min
相乘。我已经使用for
循环完成了此操作,但我一直认为这不是NumPy
做事的方式。
是否有正确的方法进行此类操作(我可能还想稍后减去常量)?
提前致谢
答案 0 :(得分:2)
是的,您可以直接将数组乘以最小向量,如下所示。
import numpy as np
data = np.random.random((500000, 24))
# This returns an array of size 500,000 that is the row of 24 values
minimum = data.min(axis=1)
data = data * minimum
如果您希望创建一个大小为24的minimum
数组(其中最小值为500,000),那么您可以选择axis=0
。
此set of slides讨论了此类操作的工作原理。
答案 1 :(得分:1)
正常乘法不会吗?
import numpy
a = numpy.random.random((4,2))
b = a * numpy.min(a,axis=0)