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:返回數組的維數spa
np.itemsize:返回數組中每一個元素的字節單位長度code
np.flage:當前值的狀態,屬性參考上一篇對象
2.來自現有數據的 一些函數方法blog
(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庫。