numpy索引說明

官方文檔,漢化之源
用到啥翻譯啥,隨緣更

numpy中可支持三種索引方式 field access, basic slicing, advanced indexing
我以我六級424的水平翻譯以下就是:區域訪問,基本操作,花裏胡哨

Basic Slicing and Indexing

基本操作僅限於索引內容爲 slice對象 單個整數 整數和slice的元組

slice對象就是長這樣的(stat:stop:step)
例如: A[(::2)]
具體見下 懶得翻譯了
在這裏插入圖片描述
但是注意slice索引方式得到的切片是原數據的一個視圖

An array that does not own its data, but refers to another array’s data instead.
視圖自身沒有數據,但它指向其他數組的數據
所以當你修改所指向數組的數據的時候,視圖的數據也會隨之改變

以下是幾種常用切片方式

  • 基本的slice形式就是star:stop:step 取出的star與stop之間步長爲step的等差序列
  • Example
    >>> x = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    >>> x[1:7:2]
    array([1, 3, 5])
  • slice支持負數,表示從尾到首的倒序遍歷
  • Example
    >>> x[-3:3:-1]
    array([7, 6, 5, 4])
  • star沒有指定時,參考step的正負,爲正star=0,爲負star=n-1
    stop沒有指定時,參考step正負,爲正stop=n,爲負stop=-n-1
    :和::意義相同,都表示選取當前軸所有元素
  • Example
    >>> x[5:] array([5, 6, 7, 8, 9])

Advanced Indexing

這裏有兩種高級索引:整數 布爾

注意高級索引返回的是原數據的copy,不再是視圖

Integer array indexing

整數數組的高級索引就是拿座標做索引,然後這個整數數組就是哪個座標
這個今天不用不翻了

Boolean array indexing

當索引爲布爾數組時對應的騷操作。這類索引等效於x[obj.nonzero()],就是把索引obj中所有不爲0的元素位置挑出來構成一個索引

舉個栗子

    A = np.array(np.random.rand(5))
    A[A > 0.5] = 1

A > 0.5會先返回一個布爾數組,根據這個布爾數組True的位置生成索引

befor: [ 0.98888704  0.03145936  0.51336152  0.45780306  0.84787507]
after: [ 1.          0.03145936  1.          0.45780306  1.        ]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章