numpy數組array的切片和索引


一維數組的切片和索引與列表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索引(三目運算)

這個在後面詳細介紹

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章