1.首先,我們回顧一下NumPy的數組屬性:
np.shape:重塑數組 如 :
a = np.array([[1,2,3],[4,5,6]]) a.shape = (3,2)
np.reshape:重塑數組 如:
a = np.array([[1,2,3],[4,5,6]])
b = a.reshape(3,2)
np.ndim:傳回數組的維數
np.itemsize:傳回數組中每個元素的位元組機關長度
np.flage:目前值的狀态,屬性參考上一篇
2.來自現有資料的 一些函數方法
(1)ndarray就不多解釋了
(2)np.frombuffer:暴露緩沖區接口的任何對象都用作參數來傳回
import numpy as np
s = 'Hello World'
a = np.frombuffer(s, dtype = 'S1')
print (a)
輸出:
['H' 'e' 'l' 'l' 'o' ' ' 'W' 'o' 'r' 'l' 'd']
(3)np.fromiter:從任何可疊代對象建構一個
ndarray
對象,傳回一個新的一維數組
# 從清單中獲得疊代器
import numpy as np
list = range(5)
it = iter(list)
# 使用疊代器建立 ndarray
x = np.fromiter(it, dtype = float)
print (x)
輸出:
[0. 1. 2. 3. 4.]
(4)np.linspace:指定了範圍之間的均勻間隔數量,而不是步長
import numpy as np
x = np.linspace(10,20,5)
print (x)
輸出:
[10. 12.5 15. 17.5 20.]
(5)np.logspace:其中包含在對數刻度上均勻分布的數字。 刻度的開始和結束端點是某個底數的幂
# 将對數空間的底數設定為 2
import numpy as np
a = np.logspace(1,10,num = 10, base = 2)
print (a)
輸出:
[ 2. 4. 8. 16. 32. 64. 128. 256. 512. 1024.]
3.進階索引
(1)整數索引:
import numpy as np
x = np.array([[1, 2], [3, 4], [5, 6]])
y = x[[0,1,2], [0,1,0]]
print (y)
輸出:
[1 4 5]
(2)布爾索引:當結果對象是布爾運算(例如比較運算符)的結果時,将使用此類型的進階索引
import numpy as np
x = np.array([[ 0, 1, 2],[ 3, 4, 5],[ 6, 7, 8],[ 9, 10, 11]])
# 現在我們會列印出大于 5 的元素
print '大于 5 的元素是:'
print x[x > 5]
輸出:
大于 5 的元素是:
[ 6 7 8 9 10 11]
4.廣播
釋義:廣播是指 NumPy 在算術運算期間處理不同形狀的數組的能力。 對數組的算術運算通常在相應的元素上進行。
例如:
import numpy as np
a = np.array([1,2,3,4])
b = np.array([10,20,30,40])
c = a * b
print (c)
輸出:
[10 40 90 160]
對于不同次元的數組,本無法進行元素之間的操作,但NumPy提供了這個功能。例如:
import numpy as np
a = np.array([[0.0,0.0,0.0],[10.0,10.0,10.0],[20.0,20.0,20.0],[30.0,30.0,30.0]])
b = np.array([1.0,2.0,3.0])
print (a + b)
輸出:
[[ 1. 2. 3.]
[ 11. 12. 13.]
[ 21. 22. 23.]
[ 31. 32. 33.]]
5.數組上的疊代
疊代器對象np.nditer,它是一個有效的多元疊代器對象,可以用于在數組上進行疊代。
a = np.arange(0,60,5)
a = a.reshape(3,4)
for x in np.nditer(a):
print (x)
輸出:
0 5 10 15 20 25 30 35 40 45 50 55
注意:疊代的順序比對數組的内容布局,而不考慮特定的排序。----也就是說,數組的變換和布局是不影響對其原始數組的疊代的,最終會按着原始數組的形式進行疊代。如果經過了拷貝,那就以拷貝後的新數組為原始對象。
廣播的疊代:
import numpy as np
a = np.arange(0,60,5)
a = a.reshape(3,4)
print ( '第一個數組:')
print (a)
print ('\n')
print ('第二個數組:' )
b = np.array([1, 2, 3, 4], dtype = int)
print (b)
print ('\n' )
print ( '修改後的數組是:' )
for x,y in np.nditer([a,b]):
print ( "%d:%d" % (x,y))
輸出:
第一個數組:
[[ 0 5 10 15]
[20 25 30 35]
[40 45 50 55]]
第二個數組:
[1 2 3 4]
修改後的數組是:
0:1 5:2 10:3 15:4 20:1 25:2 30:3 35:4 40:1 45:2 50:3 55:4
下一篇接着講NumPy的函數和Matplolib庫。
轉載于:https://www.cnblogs.com/qianshuixianyu/p/9245145.html