numpy 實現返回指定行的指定元素的位置索引

先上代碼,主要語句為np.where(b[c]==1),

詳細解釋如下:

import numpy as np 
b = np.array([[-2,-3,0,0,0,6,4,1],[88,1,0,0,0,6,4,2],[99,6,0,0,1,6,4,2]]) # 三行八列的數組b
print('b\n',b)
 
c = np.array([2,0])     # c表示指定行
print('b[c]\n',b[c])    # b[c]返回 數組b的指定行  這裡依次返回瞭b的下標為2和0的行
 
print('\n')
print(np.where(b[c]==1)) # 返回指定行的指定元素的位置索引 這裡返回瞭b[c]每行中 值為1的位置索引

觀察np.where()的返回值(array([0, 1], dtype=int64), array([4, 7], dtype=int64))可以發現,

對於數組b[c]來說,其中值為1的位置在[0,4]以及[1,7]上,np.where()返回瞭一個元組,[0]的位置表示行索引,[1]表示列索引。

綜上,np.where(b[c]==1)實現的功能是,從b中按c中元素的順序找到c所指定的行,然後再這些行中發現值為1的位置。

補充:短小精悍算例:Python如何提取數組Numpy array中指定元素的位置索引

數組a的表達式如下:

import numpy as np
a = np.array([1, 2, 3, 2, 2, 3, 0, 8, 3])
print(a)

輸出結果:

[1 2 3 2 2 3 0 8 3]

現在要找出a中元素3的位置索引。

r1 = np.where(a==3)
print(type(r1))
print(r1)

輸出結果:

<class ‘tuple’>

(array([2, 5, 8], dtype=int64),)

可見得到的是一個tuple。

如果要想得到array,采用如下表示:

r1 = np.where(a==3)
print(type(r1[0]))
print(r1[0])

輸出結果:

<class ‘numpy.ndarray’>

[2 5 8]

還可以使用argwhere()函數進行操作:

r2 = np.argwhere(a==3)
print(type(r2))
print(r2)
print(r2.shape)

輸出結果:

<class ‘numpy.ndarray’>

[[2]

[5]

[8]]

(3, 1)

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。

推薦閱讀: