1. 索引
可以通過arr[0][0]的方式取多維數(shù)組,也可以用arr[0, 0]取出對應(yīng)位置的值
arr = np.arange(20).reshape(4, 5)#將一維數(shù)組數(shù)組張成4*5的二維數(shù)組
print(arr[0][0])
print(arr[0, 0])
更高維的數(shù)組都可以通過這2種方式取出對應(yīng)位置的值
2. 切片
切片的使用方式和Python的集合類型list很類似,arr[:]是取出arr中的所有值
語法形式:arr[begin:end:step],所取出的值為[begin, end),其中step為步長,默認(rèn)為1,即從begin開始每次+step直到end為止。同list一樣,step可以為負(fù)。
多維數(shù)組用法和一維數(shù)組是一樣的,只是每個(gè)維度各自有一個(gè)begin:end:step參數(shù),下面以代碼演示
d = np.arange(24).reshape(2, 3, 4)#創(chuàng)建三維數(shù)組
print(d)
print(d[1, 1, 1])#
print(d[:, 1, 1])#取出所有行的第一列第一個(gè)元素
print(d[:, :, ::2])#取出所有行所有列的0,2...元素
輸出結(jié)果:
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
17
[ 5 17]
[[[ 0 2]
[ 4 6]
[ 8 10]]
[[12 14]
[16 18]
[20 22]]]
3. 改變數(shù)組的維度
- reshape()
reshape()在前面已經(jīng)使用過了,其作用就是改變傳入數(shù)組的維度,并返回一個(gè)新的數(shù)組 - resize()
resize()也是改變數(shù)組維度,不過是在原數(shù)組上直接做改動, 直接給.shape賦值有同樣的功能 - ravel()
展平數(shù)組,返回一個(gè)新的數(shù)組 - flatten()
同ravel(),區(qū)別在于flatten()與原數(shù)組公用一個(gè)內(nèi)存空間,原數(shù)組和新數(shù)組其中一個(gè)改變?nèi)我庖粋€(gè)元素值,另一個(gè)數(shù)組對應(yīng)位置的元素也會改變
4. 數(shù)組的組合
- 水平組合hstack((arr1, arr2)),即將arr2拼接在arr1之后
這里需要注意arr1和arr2的維度及高度必須一樣 - 垂直組合vstack((arr1, arr2)),將arr2拼接在arr1下面
- 深度組合dstack((arr1, arr2)),就是將一系列數(shù)組沿著縱軸(深度)方向進(jìn)行層疊組合
- concatenate((arr1, arr2), axis),通過axis來決定是hstack還是vstack
- column_stack,和hstack類似
- row_stack, 和vstack類似
5. 數(shù)組的分割
- hsplit(arr, n),將數(shù)組拆分為n列
- vsplit(arr, n),將數(shù)組拆分為n行
- dsplit(arr, n),按照深度方向分割數(shù)組
- split(arr, n, axis), 包含上面幾種分割方式
5.數(shù)組的屬性
- ndim,數(shù)組的維度
- size,數(shù)組元素的總個(gè)數(shù)
- itemsize,每個(gè)元素的字節(jié)數(shù)
- nbytes, 數(shù)組所占字節(jié)數(shù)
- T,轉(zhuǎn)置矩陣
- real,取出復(fù)數(shù)數(shù)組的實(shí)部
- imag,取出虛部
- flat,返回一個(gè)迭代器,可以遍歷數(shù)組的所有元素
總結(jié)
ndarray用法比較多,建議邊運(yùn)行出結(jié)果加強(qiáng)理解和記憶