假设我有一个numpy数组:
data = np.array([[1,1,1],[2,2,2],[3,3,3]])
我有一个对应的“向量”:
vector = np.array([1,2,3])
如何操作
沿着每一行进行减法或除法,因此结果为:
sub_result = [[0,0,0], [0,0,0], [0,0,0]]
div_result = [[1,1,1], [1,1,1], [1,1,1]]
长话短说:如何使用对应于每行的一维标量数组对二维数组的每一行执行操作?
发布于 2013-10-26 10:38:16
给你。你只需要使用
(或者另选
)与广播相结合:
In [6]: data - vector[:,None]
Out[6]:
array([[0, 0, 0],
[0, 0, 0],
[0, 0, 0]])
In [7]: data / vector[:,None]
Out[7]:
array([[1, 1, 1],
[1, 1, 1],
[1, 1, 1]])
发布于 2013-10-26 12:10:05
如前所述,使用
或使用
是一个很好的方法来做到这一点。另一种选择是使用转置和广播,如
(data.T - vector).T
和
(data.T / vector).T
对于更高维数的数组,您可能希望使用
NumPy数组或NumPy的方法
函数。有很多方法可以做到这一点。
有关广播的详细说明,请参阅
http://docs.scipy.org/doc/numpy/user/basics.broadcasting.html
发布于 2019-03-21 12:52:22
Pythonic式的方法是...
np.divide(data.T,vector).T
这将负责整形,并且结果也是浮点格式的。在其他答案中,结果是四舍五入的整数格式。
#注意:
数据和向量中的列数应匹配
https://stackoverflow.com/questions/19602187
复制相似问题