用numpy将矩阵映射到特定向量

时间:2018-07-31 21:50:05

标签: python numpy vector

我的矩阵与此类似:

1 0 0
1 0 0
0 2 0
0 2 0
0 0 3
0 0 3

(非零数字表示我感兴趣的部分。矩阵内的实际数字可能是随机的。)

我需要产生这样的向量:

[ 1 1 2 2 3 3 ].T

我可以使用循环:

result = np.zeros([rows])
for y in range(rows):
    x = y // (rows // cols)  # pick index of corresponded column
    result[y] = mat[y][x]

但是我不知道如何以矢量形式进行操作。

1 个答案:

答案 0 :(得分:2)

这可能就是您想要的。

import numpy as np

m = np.array([
    [1, 0, 0],
    [1, 0, 0],
    [0, 2, 0],
    [0, 2, 0],
    [0, 0, 3],
    [0, 0, 3]
])

rows, cols = m.shape
# axis1 indices
y = np.arange(rows)
# axis2 indices
x = y // (rows // cols)

result = m[y,x]

print(result)

结果:

[1 1 2 2 3 3]