我的矩阵与此类似:
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]
但是我不知道如何以矢量形式进行操作。
答案 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]