numpy 建立空数组并按某种顺序排列数组的每行

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])

猜你喜欢

转载自blog.csdn.net/weixin_42280517/article/details/89357974