官方文檔,漢化之源
用到啥翻譯啥,隨緣更
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
- slice支持負數,表示從尾到首的倒序遍歷 Example
- star沒有指定時,參考step的正負,爲正star=0,爲負star=n-1
stop沒有指定時,參考step正負,爲正stop=n,爲負stop=-n-1
:和::意義相同,都表示選取當前軸所有元素 Example
>>> x = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> x[1:7:2]
array([1, 3, 5])
>>> x[-3:3:-1]
array([7, 6, 5, 4])
>>> 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. ]