花式索引
切片
import numpy as np
# 切片
a = np.arange(10)
print("a:{}".format(a))
print("a[2:7:2]結(jié)果:{}".format(a[2:7:2]))
結(jié)果:
a:[0 1 2 3 4 5 6 7 8 9]
a[2:7:2]結(jié)果:[2 4 6]
解析:
1.索引范圍是2到7(不包含7)

image.png
2.切片步長(zhǎng)是2

image.png
3.最終結(jié)果:

image.png
import numpy as np
# 切片
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
b = a[1:3, 0:2]
print("a:{}".format(a))
print("b:{}".format(b))
結(jié)果:
a:[[1 2 3]
[4 5 6]
[7 8 9]]
b:[[4 5]
[7 8]]
解析:

image.png
索引
import numpy as np
# 索引
a = np.arange(10, 20)
print("a:{}".format(a))
print("a[[1, 3, 6, 8]]結(jié)果:{}".format(a[[1, 3, 6, 8]]))
結(jié)果:
a:[10 11 12 13 14 15 16 17 18 19]
a[[1, 3, 6, 8]]結(jié)果:[11 13 16 18]
解析:
1.逐個(gè)索引取數(shù)據(jù)

image.png
2.最終結(jié)果:

image.png
高級(jí)索引
import numpy as np
# 高級(jí)索引
x = np.array([[1, 2], [3, 4], [5, 6]])
y = x[[0, 2, 0], [0, 1, 1]]
print("x:{}".format(x))
print("y:{}".format(y))
結(jié)果:
x:[[1 2]
[3 4]
[5 6]]
y:[1 6 2]
解析:
1.按照索引值定位子元素

image.png
2.在上一步的基礎(chǔ)上進(jìn)一步定位

image.png
3.最終結(jié)果:

image.png
import numpy as np
# 高級(jí)索引
x = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11]])
print('我們的數(shù)組x:')
print(x)
print('\n')
rows = [[0, 0], [3, 3]]
cols = [[0, 2], [0, 2]]
y = x[rows, cols]
print('這個(gè)數(shù)組的四個(gè)角元素是:')
print(y)
結(jié)果:
我們的數(shù)組x:
[[ 0 1 2]
[ 3 4 5]
[ 6 7 8]
[ 9 10 11]]
這個(gè)數(shù)組的四個(gè)角元素是:
[[ 0 2]
[ 9 11]]
1.按索引位逐個(gè)取值

image.png
2.最終結(jié)果:

image.png
廣播
import numpy as np
#廣播
a = np.array([[0, 0, 0],
[10, 10, 10],
[20, 20, 20],
[30, 30, 30]])
b = np.array([1, 2, 3])
print(a + b)
結(jié)果:
[[ 1 2 3]
[11 12 13]
[21 22 23]
[31 32 33]]
解析:

image.png
廣播的規(guī)則:
1.讓所有輸入數(shù)組都向其中形狀最長(zhǎng)的數(shù)組看齊,形狀中不足的部分都通過(guò)在前面加 1 補(bǔ)齊。
2.輸出數(shù)組的形狀是輸入數(shù)組形狀的各個(gè)維度上的最大值。
3.如果輸入數(shù)組的某個(gè)維度和輸出數(shù)組的對(duì)應(yīng)維度的長(zhǎng)度相同或者其長(zhǎng)度為 1 時(shí),這個(gè)數(shù)組能夠用來(lái)計(jì)算,否則出錯(cuò)。
4.當(dāng)輸入數(shù)組的某個(gè)維度的長(zhǎng)度為 1 時(shí),沿著此維度運(yùn)算時(shí)都用此維度上的第一組值。
簡(jiǎn)單理解:
對(duì)兩個(gè)數(shù)組,分別比較他們的每一個(gè)維度(若其中一個(gè)數(shù)組沒(méi)有當(dāng)前維度則忽略),滿足:
1.數(shù)組擁有相同形狀。
2.當(dāng)前維度的值相等。
3.當(dāng)前維度的值有一個(gè)是 1。