我在python中有這種形狀爲10,000x30的矩陣。我想要的是找到行的索引,即從10,000行開始,確定第五列值等於0的索引。在Python中使用matlab的查找操作
如何獲得索引。一旦我得到索引,我想從另一個矩陣B中選擇相應的行。我該如何實現?
我在python中有這種形狀爲10,000x30的矩陣。我想要的是找到行的索引,即從10,000行開始,確定第五列值等於0的索引。在Python中使用matlab的查找操作
如何獲得索引。一旦我得到索引,我想從另一個矩陣B中選擇相應的行。我該如何實現?
>>> a = np.random.randint(0, 10, (10, 5))
>>> a
array([[4, 9, 7, 2, 9],
[1, 9, 5, 0, 8],
[1, 7, 7, 8, 4],
[6, 2, 1, 9, 6],
[6, 2, 0, 0, 8],
[5, 5, 8, 4, 5],
[6, 8, 8, 8, 8],
[2, 2, 3, 4, 3],
[3, 6, 2, 1, 2],
[6, 3, 2, 4, 0]])
>>> a[:, 4] == 0
array([False, False, False, False, False, False, False, False, False, True], dtype=bool)
>>> b = np.random.rand(10, 5)
>>> b
array([[ 0.37363295, 0.96763033, 0.72892652, 0.77217485, 0.86549555],
[ 0.83041897, 0.35277681, 0.13011611, 0.82887195, 0.87522863],
[ 0.88325189, 0.67976957, 0.56058782, 0.58438597, 0.10571746],
[ 0.27305838, 0.72306733, 0.01630463, 0.86069002, 0.9458257 ],
[ 0.23113894, 0.30396521, 0.92840314, 0.39544522, 0.59708927],
[ 0.71878406, 0.91327744, 0.71407427, 0.65388644, 0.416599 ],
[ 0.83550209, 0.85024774, 0.96788451, 0.72253464, 0.41661953],
[ 0.61458993, 0.34527785, 0.20301719, 0.10626226, 0.00773484],
[ 0.87275531, 0.54878131, 0.24933454, 0.29894835, 0.66966912],
[ 0.59533278, 0.15037691, 0.37865046, 0.99402371, 0.17325722]])
>>> b[a[:,4] == 0]
array([[ 0.59533278, 0.15037691, 0.37865046, 0.99402371, 0.17325722]])
>>>
爲了得到find
樣的結果,而不是使用邏輯索引使用np.where
,它返回數組的一個元組,其作爲指標到每個維度:
>>> indices = np.where(a[:, 4] == 0)
>>> b[indices[0]]
array([[ 0.59533278, 0.15037691, 0.37865046, 0.99402371, 0.17325722]])
>>>
誰就建議關閉:我認爲這個問題是相當清楚的,特別是如果你知道任何Matlab或NumPy。然而,一個簡單的谷歌「查找matlab numpy」出現了...... – horchler