numpy数组按矢量划分列

时间:2016-02-26 21:18:38

标签: python numpy

我有一个3x3 numpy数组,我想用向量3x1划分它的每一列。我知道如何按向量的元素划分每一行,但我找不到划分每列的解决方案。

3 个答案:

答案 0 :(得分:3)

您可以转置数组以划分每列

(arr_3x3.T/arr_3x1).T

答案 1 :(得分:2)

让我们尝试几件事:

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)数组跨行复制。

使用x(转置)时.T为2d很重要。 (3,)数组转换为(3,)数组 - 即没有变化。

答案 2 :(得分:0)

最简单的似乎是

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_一样。