圖解Numpy花式索引及廣播

花式索引

切片

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。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ORA-00001: 違反唯一約束條件 (.) 錯(cuò)誤說(shuō)明:當(dāng)在唯一索引所對(duì)應(yīng)的列上鍵入重復(fù)值時(shí),會(huì)觸發(fā)此異常。 O...
    我想起個(gè)好名字閱讀 6,018評(píng)論 0 9
  • 今天看到一位朋友寫的mysql筆記總結(jié),覺(jué)得寫的很詳細(xì)很用心,這里轉(zhuǎn)載一下,供大家參考下,也希望大家能關(guān)注他原文地...
    信仰與初衷閱讀 4,840評(píng)論 0 30
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,684評(píng)論 1 32
  • Solr&ElasticSearch原理及應(yīng)用 一、綜述 搜索 http://baike.baidu.com/it...
    樓外樓V閱讀 7,654評(píng)論 1 17
  • 翻開(kāi)天氣app,住著爸媽的家里的空氣是濕潤(rùn)的。而上海,依舊艷陽(yáng)天。 其實(shí)這是多此一舉,早上我在***上就看到了家里...
    文勝質(zhì)閱讀 318評(píng)論 0 1

友情鏈接更多精彩內(nèi)容