第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

Numpy 數(shù)組操作

Numpy 中包含了一些函數(shù)用于處理數(shù)組,本節(jié)重點介紹如下幾類:

  • 修改數(shù)組形狀;
  • 翻轉(zhuǎn)數(shù)組;
  • 格式轉(zhuǎn)換。

1. 修改數(shù)組形狀

常用的修改數(shù)組形狀的函數(shù)有:

函數(shù) 說明
reshape 不改變數(shù)據(jù)的條件下修改形狀
flat 數(shù)組元素迭代器
flatten 返回一份數(shù)組拷貝,對拷貝所做的修改不會影響原始數(shù)組
ravel 返回展開數(shù)組

1.1 reshape

numpy.reshape 函數(shù)可以在不改變數(shù)據(jù)的條件下修改形狀,其函數(shù)原型如下:

numpy.reshape(arr, newshape, order='C')
參數(shù) 說明
arr 待修改形狀的數(shù)組
newshape 整數(shù)或者整數(shù)數(shù)組,新的形狀應(yīng)當(dāng)兼容原有形狀
order ‘C’ – 按行,‘F’ – 按列,‘A’ – 原順序,‘k’ – 元素在內(nèi)存中的出現(xiàn)順序。

案例

生成一維數(shù)組,并利用 reshape 進(jìn)行數(shù)組形狀的重整:

arr0 = np.arange(8).reshape(2,4)

輸出結(jié)果為:

array([[0, 1, 2, 3],
       [4, 5, 6, 7]])

1.2 flat

numpy.ndarray.flat 是一個數(shù)組元素迭代器,可以利用for循環(huán)對迭代器進(jìn)行遍歷。

案例

查閱數(shù)組 arr0 中的元素

for element in arr0.flat:
    print(element)

程序執(zhí)行結(jié)果為:

0
1
2
3
4
5
6
7

1.3 flatten

numpy.ndarray.flatten返回一份數(shù)組拷貝,并折疊為一維的數(shù)組。對拷貝所做的修改不會影響原始數(shù)組,函數(shù)原型如下:

ndarray.flatten(order='C')

其中,order 可選:‘C’ – 按行,‘F’ – 按列,‘A’ – 原順序,‘K’ – 元素在內(nèi)存中的出現(xiàn)順序。

案例

將數(shù)組 arr0 以特定順序展開:

print("將arr0以行順序展開:", arr0.flatten(order='C'))
print("將arr0以列順序展開:", arr0.flatten(order='F'))

執(zhí)行結(jié)果為:

將arr0以行順序展開: [0 1 2 3 4 5 6 7]
將arr0以列順序展開: [0 4 1 5 2 6 3 7]

1.4 ravel

numpy.ravel() 展平的數(shù)組元素,順序通常是"C風(fēng)格",返回的是數(shù)組視圖(view),修改會影響原始數(shù)組。

該函數(shù)接收兩個參數(shù):

numpy.ravel(a, order='C')

其中,order 可選:‘C’ – 按行,‘F’ – 按列,‘A’ – 原順序,‘K’ – 元素在內(nèi)存中的出現(xiàn)順序。

案例

arr_r = np.ravel(arr0, order='C')

展開結(jié)果為:

arr_r
out:
    array([0, 1, 2, 3, 4, 5, 6, 7])

通過切片賦值的方法,顯式地改變 arr_r 的值,查看 arr0 的變化:

arr_r[0] = 100
arr0
out:
    array([[100,   1,   2,   3],
       [  4,   5,   6,   7]])

可以看到,雖然利用 ravel 方法對 arr0 進(jìn)行了展開,但是對展開后的結(jié)果所做的修改,也會對應(yīng)地出現(xiàn)在 arr0 上。

2. 翻轉(zhuǎn)數(shù)組

numpy.transpose 函數(shù)用于對換數(shù)組的維度。

案例

調(diào)換 arr0 的數(shù)組維度,達(dá)到轉(zhuǎn)置的效果:

np.transpose(arr0)
out:
    array([[100,   4],
       [  1,   5],
       [  2,   6],
       [  3,   7]])

類似地,上述案例可以寫為:

arr0.transpose()
out:
    array([[100,   4],
       [  1,   5],
       [  2,   6],
       [  3,   7]])

或者:

arr0.T
out:
    array([[100,   4],
       [  1,   5],
       [  2,   6],
       [  3,   7]])

3. 格式轉(zhuǎn)換

借助于 tolist(),可以快速把 ndarray 格式的數(shù)組,轉(zhuǎn)變?yōu)榱斜?,方便在某些情況下使用。

案例

把 arr0 轉(zhuǎn)化為列表:

arr0.tolist()
out:
    [[100, 1, 2, 3], [4, 5, 6, 7]]

可以看到,對于二維數(shù)組,轉(zhuǎn)化后的結(jié)果是一個兩層嵌套列表。

4. 小結(jié)

本節(jié)重點介紹數(shù)組操作的三種方法:修改數(shù)組形狀、翻轉(zhuǎn)數(shù)組以及轉(zhuǎn)化數(shù)組為列表。特別要注意的是ravel() 函數(shù),返回的是原始數(shù)組的視圖,對結(jié)果的修改會對應(yīng)地體現(xiàn)在原始數(shù)組上。