我有一个2D形状的数组(100,12)。当数组的所有“行”都满足条件时,我想获取首次出现的索引。
x1 = np.random.randint(0,7, 120).reshape(10,12)
print(x1)
[[4 0 3 6 2 2 3 2 5 3 4 2]
[0 5 0 1 0 4 4 4 4 3 5 2]
[5 1 1 6 0 3 4 5 2 2 4 1]
[1 6 4 3 0 2 4 5 3 4 5 5]
[4 4 4 6 4 0 1 4 3 1 4 5]
[5 2 4 3 0 1 2 5 2 1 0 6]
[2 6 4 0 5 3 1 2 3 1 6 4]
[2 0 1 3 4 4 3 4 1 1 4 0]
[3 5 2 5 5 2 5 1 5 4 6 3]
[6 1 4 0 0 2 3 1 6 5 2 0]]
我的解决方案:
row_ind, col_ind = np.where(x1==0)
x2 = list(zip(row_ind,col_ind))
x3 = np.array(x2)
temp_df=pd.DataFrame({'col1':x3[:,0],'col2':x3[:,1]})
min_v = list(temp_df.groupby('col1')['col2'].min())
预期结果:
[1, 0, 4, 4, 5, 4, 3, 1, 3]
我相信有更好的方法来实现这一目标。