import numpy as np
dis = np.array([[1,2,3,4],[5,6,7,8],[5,6,7,8]])
print('dis\n',dis)
mask = np.array([[2,2,1,0],[2,2,1,0],[2,2,1,0]])
print('mask\n',mask)
x = np.empty([0, 4]) # 建立空数组
for i in range(len(dis)):
x = np.append(x,[dis[i][mask[i]]],axis=0) # 对于dis数组的每一行,用mask的顺序重新排列
# x = np.vstack((x,dis[i][mask[i]])) # 等效为上一行的写法
print('x\n',x)
结果展示
解释一下
对于dis的每一行dis[i],用mask的相应行mask[i],去指导dis的该行按mask的顺序排列。
简单来说,
dis = np.array([1,2,3,4])
print('dis\n',dis)
mask = np.array([2,2,1,0])
print('mask\n',mask)
print('result\n',dis[mask])
进阶:
让dis按照mask的大小,由小到大排序。
print('result2\n',dis[np.argsort(mask)])