1.切片
import numpy as np
#切片和索引
a=np.arange(10)
print(a)
s=slice(2,7,2)
print(a[s])
c=a[2:7:2]
print(c)
#[0 1 2 3 4 5 6 7 8 9]
#[2 4 6]
#[2 4 6]
d=np.arange(9).reshape([3,3])
print(d)
#選取d的第二行及之後的資料
print(d[1:])
#選取d的第三列資料,"..."在行位置上時表示整行
print(d[...,2])#print(d[:,2])
print(d[0,...])#print(d[0,:])
#[[0 1 2]
# [3 4 5]
# [6 7 8]]
#[[3 4 5]
# [6 7 8]]
#[2 5 8]
#[0 1 2]
2.高階索引
import numpy as np
#numpy高階索引
a=np.arange(15).reshape([3,5])
print(a)
#返回座標為(0,2),(1,3),(1,4)
print(a[[0,1,1],[2,3,4]])
#借助切片
b=a[1:3,1:3]
print(b)
c=a[1:3,[0,1]]
print(c)
d=a[...,1:]
print(d)
#[[ 0 1 2 3 4]
# [ 5 6 7 8 9]
# [10 11 12 13 14]]
#[2 8 9]
#[[ 6 7]
# [11 12]]
#[[ 5 6]
# [10 11]]
#[[ 1 2 3 4]
# [ 6 7 8 9]
# [11 12 13 14]]
3.bool運算
import numpy as np
a=np.arange(15).reshape([3,5])
print(a)
#bool運算
print(a>5)
print(a[a>5])
# ~(取補運算子)來過濾 nan
a=np.array([np.nan,1,2,np.nan,3,4,5])
print(np.isnan(a))
print(a[~np.isnan(a)])
#過濾掉非複數元素
a = np.array([1, 2+6j, 5, 3.5+5j])
print (a[np.iscomplex(a)])
#[[ 0 1 2 3 4]
# [ 5 6 7 8 9]
# [10 11 12 13 14]]
#[[false false false false false]
# [false true true true true]
# [ true true true true true]]
#[ 6 7 8 9 10 11 12 13 14]
#[ true false false true false false false]
#[1. 2. 3. 4. 5.]
#[2. +6.j 3.5+5.j]
4.花式索引
import numpy as np
#花式索引
x=np.arange(32).reshape((8,4))
print(x)
#[[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]
# [12 13 14 15]
# [16 17 18 19]
# [20 21 22 23]
# [24 25 26 27]
# [28 29 30 31]]
#傳入順序索引陣列
print (x[[4,2,1,7]])
#[[16 17 18 19]
# [ 8 9 10 11]
# [ 4 5 6 7]
# [28 29 30 31]]
#傳入倒序索引陣列
print (x[[-4,-2,-1,-7]])
#[[16 17 18 19]
# [24 25 26 27]
# [28 29 30 31]
# [ 4 5 6 7]]
#按照行選取,再按順序將列排序,獲得乙個矩形
print(x[[1,5,7,2]][:,[0,3,1,2]])
#先按先選取第1、5、2、7行,每一行再按第0個、第3個、第1個、第2個排序
# [[ 4 7 5 6]
# [20 23 21 22]
# [28 31 29 30]
# [ 8 11 9 10]]
#np.ix_函式,能把兩個一維陣列 轉換為 乙個用於選取方形區域的索引器,
#直接往np.ix_()裡扔進兩個一維陣列[1,5,7,2],[0,3,1,2],就能先按我們要求選取行,
#再按順序將列排序,跟上面得到的結果一樣,而不用寫「[ : , [0,3,1,2] ]」
print (x[np.ix_([1,5,7,2],[0,3,1,2])])
#[[ 4 7 5 6]
# [20 23 21 22]
# [28 31 29 30]
# [ 8 11 9 10]]
參考:
以上,記錄本人學習過程。
numpy 索引和切片
一 取行 1 單行 陣列 index,取第index 1行 例子import numpy as np arr1 np.arange 0,24 reshape 4,6 取第2行資料 row1 arr1 1,print row1 2 連續的多行 陣列 start end 顧頭不顧尾,也可以使用步長,不過...
NumPy 切片和索引
import numpy asnp a np.arange 10,20,1 b slice 1,5,2 d a 1 5 2 e a 2 print a print a b print d print e 結果 1011 1213 1415 1617 1819 1113 1113 1213 1415 ...
初探numpy 切片和索引
import numpy as np 使用切片引數start stop step來進行切片操作 a array np.arange 10 print a array,n b array a array 1 10 2 print b array,n c array a array 2 print c ...