簡體   English   中英

整數數組索引在numpy中如何工作?

[英]How does integer-array indexing work in numpy?

我無法理解numpy中的整數數組索引。

>>> x = np.array([[1, 2], [3, 4], [5, 6]])
>>> x[[0, 1, 2], [0, 1, 0]]
array([1, 4, 5])

請解釋一下這是怎么回事?

x[[0,1,2],[0,1,0]] 

[0,1,2] <-在這里您將指定要使用的數組[0,1,0] <-在這里您從每個指定的數組中選擇元素

因此數組0中的元素0,元素1形成了arr 1,依此類推

In [76]: x = np.array([[1, 2], [3, 4], [5, 6]])
In [77]: x
Out[77]: 
array([[1, 2],
       [3, 4],
       [5, 6]])

由於第一和第二索引列表的大小匹配,因此將它們的值配對以從x選擇元素。 我將通過列表索引進行說明:

In [78]: x[[0, 1, 2], [0, 1, 0]]
Out[78]: array([1, 4, 5])
In [79]: list(zip([0, 1, 2], [0, 1, 0]))
Out[79]: [(0, 0), (1, 1), (2, 0)]
In [80]: [x[i,j] for i,j in zip([0, 1, 2], [0, 1, 0])]
Out[80]: [1, 4, 5]

更確切地說,它將返回x[0,0]x[1,1]x[2,0]作為一維數組。 另一種思維方式是,您分別從3行中選擇了[0,1,0]元素。

我發現最容易理解如下:

In [179]: x = np.array([[1, 2], [3, 4], [5, 6]])                                                                     

In [180]: x                                                                                                          
Out[180]: 
array([[1, 2],
       [3, 4],
       [5, 6]])

說,我們要選擇145 ,從這個矩陣。 因此,第0行的第0列,第1行的第1列和第2行的第0列。 現在為索引提供兩個數組(矩陣的每個維度一個),在這里我們用行然后是我們感興趣的列填充這些數組:

In [181]: rows = np.array([0, 1, 2])                                                                                 

In [182]: cols = np.array([0, 1, 0])                                                                                 

In [183]: x[rows, cols]                                                                                              
Out[183]: array([1, 4, 5])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM