一維數組的切片和索引與列表list是一樣的,這裏着重介紹二維數組。
1、遞歸方式
1.1 遞歸索引
import numpy as np
arr = np.random.randint(0,10,(3,5))
print(arr)
print(arr[0][0])
[[4 3 1 3 0]
[8 8 8 8 6]
[7 0 8 7 7]]
4
1.2 遞歸切片
注意同樣是左閉右開。
import numpy as np
arr = np.random.randint(0,10,(3,5))
print(arr)
print()
print(arr[0:2])
[[0 7 9 6 4]
[2 0 2 2 7]
[9 7 6 7 0]]
…
[[0 7 9 6 4]
[2 0 2 2 7]]
2、逗號分隔方式
2.1逗號索引
import numpy as np
arr = np.random.randint(0,10,(3,5))
print(arr)
print()
print(arr[0,2])
[[0 5 6 7 9]
[3 7 6 7 5]
[9 4 8 0 5]]
…
6
2.2 逗號切片
import numpy as np
arr = np.random.randint(0,10,(3,5))
print(arr)
print()
print(arr[0:2,1:3])
[[2 5 5 4 7]
[7 2 2 3 1]
[1 7 9 3 2]]
…
[[5 5]
[2 2]]
2.3 神奇索引
逗號分隔,取單獨的行和列,這樣只會取到交點,但這是一種深拷貝。
例如:
import numpy as np
arr = np.random.randint(0,10,(3,5))
print(arr)
print()
print(arr[[0,2],[1,2]])
取出來只有兩個值,分別是[0,1]和[2,2]處的值。
[[5 9 6 2 4]
[9 9 3 0 3]
[2 4 8 3 7]]
…
[9 8]
3、布爾索引(比較索引)
import numpy as np
arr = np.random.randint(0,10,(3,5))
print(arr)
print()
print(arr[arr>=5])
它會取出所有大於等於5的值,展成一維數組。
[[3 3 5 7 8]
[8 2 4 8 5]
[6 8 9 8 7]]
…
[5 7 8 8 8 5 6 8 9 8 7]
import numpy as np
arr = np.random.randint(0,10,(3,5))
print(arr)
print()
arr>=5
[[3 5 0 0 1]
[0 1 1 9 1]
[4 6 3 0 6]]
…
array([[False, True, False, False, False],
[False, False, False, True, False],
[False, True, False, False, True]])
4、where索引(三目運算)
這個在後面詳細介紹