繁体   English   中英

numpy数组按向量划分列

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM