[英]numpy array divide column by vector
我有一个3x3的numpy数组,我想用矢量3x1划分每一列。 我知道如何用向量的元素划分每一行,但是无法找到一种解决方案来划分每一列。
您可以转置数组以在每一列上划分
(arr_3x3.T/arr_3x1).T
让我们尝试几件事:
In [347]: A=np.arange(9.).reshape(3,3)
In [348]: A
Out[348]:
array([[ 0., 1., 2.],
[ 3., 4., 5.],
[ 6., 7., 8.]])
In [349]: x=10**np.arange(3).reshape(3,1)
In [350]: A/x
Out[350]:
array([[ 0. , 1. , 2. ],
[ 0.3 , 0.4 , 0.5 ],
[ 0.06, 0.07, 0.08]])
所以这将每一行除以不同的值
In [351]: A/x.T
Out[351]:
array([[ 0. , 0.1 , 0.02],
[ 3. , 0.4 , 0.05],
[ 6. , 0.7 , 0.08]])
这将每一列除以不同的值
(3,3)
除以(3,1)
=>将x
跨列复制。
使用转置(1,3)
数组可跨行复制。
使用.T
(转置)时, x
为2d非常重要。 (3,)
数组转置为(3,)
数组-即不变。
最简单的似乎是
A = np.arange(1,10).reshape(3,3)
b=np.arange(1,4)
A/b
A将是
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
和b将是
array([1, 2, 3])
该部门将产生
array([[1. , 1. , 1. ],
[4. , 2.5, 2. ],
[7. , 4. , 3. ]])
第一列除以1
,第二列除以2
,第三列除以3
。 如果我误解了您的行列,只需使用.T进行转换-就像上面回答的C_Z_一样。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.