numpy基本操作 2 切片和索引

2021-09-21 06:33:12 字數 2974 閱讀 5911

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 ...