簡體   English   中英

numpy 數組切片索引

[英]numpy array slicing index

import numpy as np
a=np.array([ [1,2,3],[4,5,6],[7,8,9]])
  • 如何獲得第零個索引列? 期望輸出[[1],[2],[3]] a[...,0]給出一維數組。 也許下一個問題可以回答這個問題。

  • 如何獲得最后的2列a a[...,1:2]僅給出第二列, a[...,2:3]給出最后兩列,但a[...,3]是無效維度。 那么它是怎樣工作的?

順便說一下,運算符...:具有相同的含義嗎? a[...,0]a[:,0]給出相同的輸出。 有人可以在這里發表評論嗎?

numpy索引建立在python列表約定之上,但擴展到多維和多元素索引。 它功能強大,但很復雜,但您遲早應該閱讀完整的indexing文檔,該文檔區分“基本”和“高級”索引。

rangearange ,切片索引具有“開放”停止值

In [111]: a = np.arange(1,10).reshape(3,3)                                                       
In [112]: a                                                                                      
Out[112]: 
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])

無論在哪里,使用標量進行索引都會減少維度:

In [113]: a[1,:]                                                                                 
Out[113]: array([4, 5, 6])
In [114]: a[:,1]                                                                                 
Out[114]: array([2, 5, 8])

這也意味着a[1,1]返回5 ,而不是np.array([[5]])

使用切片進行索引會保留維度:

In [115]: a[1:2,:]                                                                               
Out[115]: array([[4, 5, 6]])

使用列表或數組進行索引也是如此(盡管這會生成copy ,而不是view ):

In [116]: a[[1],:]                                                                               
Out[116]: array([[4, 5, 6]])

...是一個概括: - 根據需要使用盡可能多的。

In [117]: a[...,[1]]                                                                             
Out[117]: 
array([[2],
       [5],
       [8]])

您可以使用newaxis或 reshape 調整尺寸:

In [118]: a[:,1,np.newaxis]                                                                      
Out[118]: 
array([[2],
       [5],
       [8]])

請注意,尾隨:是自動的。 a[1]a[1,:] 但領導者必須明確。

列表索引還會刪除“維度/嵌套層”

In [119]: alist = [[1,2,3],[4,5,6]]                                                              
In [120]: alist[0]                                                                               
Out[120]: [1, 2, 3]
In [121]: alist[0][0]                                                                            
Out[121]: 1
In [122]: [l[0] for l in alist]     # a column equivalent                                                                  
Out[122]: [1, 4]
import numpy as np
a=np.array([ [1,2,3],[4,5,6],[7,8,9]])

a[:,0] # first colomn
>>> array([1, 4, 7]) 
a[0,:] # first row
>>> array([1, 2, 3])
a[:,0:2] # first two columns
>>> array([[1, 2],
       [4, 5],
       [7, 8]])
a[0:2,:] # first two rows
>>> array([[1, 2, 3],
       [4, 5, 6]])

暫無
暫無

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

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