數(shù)組創(chuàng)建
numpy.empty(shape, dtype=float, order='C')
numpy.zeros(shape, dtype=float, order='C')
numpy.ones(shape, dtype=float, order='C')
根據(jù)列表或者元組參數(shù) a 創(chuàng)建數(shù)組
numpy.asarray(a, dtype=None, order=None)
根據(jù)緩沖區(qū)的對象作為參數(shù) buffer 作為 ndarray
"""
dtype 默認(rèn)為 float,表示數(shù)據(jù)類型
count 默認(rèn)值為 -1,表示讀取所有數(shù)據(jù)
offset 默認(rèn)為 0,表示從第一位讀取
"""
numpy.frombuffer(buffer, dtype=float, count=-1, offset=0)
根據(jù)可迭代對象 iterable 返回一個新的一維數(shù)組
numpy.fromiter(iterable, dtype=float, count=-1)
根據(jù)數(shù)值范圍來創(chuàng)建數(shù)組
"""
start 默認(rèn)為 0,表示范圍的起始值
stop 范圍的終止值(開區(qū)間,不包括該數(shù))
step 默認(rèn)為 1,表示兩個值的間隔
dtype 返回ndarray的數(shù)據(jù)類型,如果沒有提供,則會使用輸入數(shù)據(jù)的類型
"""
numpy.arange(start, stop, step, dtype)
指定范圍內(nèi)的均勻間隔數(shù)量,而不是步長,來創(chuàng)建數(shù)組
"""
start 序列的起始值
stop 序列的終止值,如果 endpoint 為 true,該值包含于序列中
num 默認(rèn)為 50,要生成的等間隔樣例數(shù)量
endpoint 默認(rèn)為 true,表示是否包含 stop 值
retstep 默認(rèn)為 false, 表示是否返回連續(xù)數(shù)字之間的步長
dtype 返回ndarray的數(shù)據(jù)類型
"""
numpy.linspace(start, stop, num, endpoint, retstep, dtype)
包含在對數(shù)刻度上均勻分布的數(shù)字,刻度的開始和結(jié)束端點是某個底數(shù)的冪,通常為10
"""
類似于 numpy.linspace 函數(shù),只是這里是對數(shù)刻度上的均勻分布而已,多了一個參數(shù) base,默認(rèn)為 10;并且沒有 retstep 參數(shù)
"""
numpy.logspace(start, stop, num, endpoint, base, dtype)
索引方法:字段訪問、基本切片和高級索引
基本切片
"""
- 通過將 start stop 和 step 參數(shù)提供給內(nèi)置的 slice 函數(shù)來構(gòu)造一個 python slice 對象
a = np.arange(10)
s = slice(2, 7, 1) # [2, 3, 4, 5, 6]
a[s]
等效于
a[2:7:1] 或者 a[2:7] - 使用包括省略號 ... 來使選擇元組的長度與數(shù)組的維度相同,如果在行位置使用省略號,它將返回包含行中元素的 ndarray
"""
高級索引
"""
如果一個 ndarray 是非元組序列,數(shù)據(jù)類型為整數(shù)或布爾值的ndarray,或者至少一個元素為序列對象的元組,
我們就能夠用它來索引ndarray。
高級索引始終返回數(shù)據(jù)的副本,與此相反,切片只提供一個視圖。
"""
使用布爾值
x = numpy.arange(12).reshape(4,3)
print x[x > 5] # 獲取大于5的元素
使用 ~ 取補運算符 來過濾 NaN
x = numpy.array([numpy.nan, 1, 2, numpy.nan, 3, 4, 5])
print x[~numpy.isnan(x)]
使用 iscomplex 過濾
x = numpy.array([1, 2+6j, 5, 3.5+5j])
print x[numpy.iscomplex(x)]
廣播 broadcast
"""
當(dāng)操作兩個array時,numpy會逐個比較它們的shape(構(gòu)成元組tuple),只有在下述情況下,兩arrays才算兼容
- 相等
- 其中一個為1,(進而可進行拷貝拓展,達到shape匹配)
注意:
- 執(zhí)行broadcast的前提是,兩個ndarray執(zhí)行的是 element-wise(按位加、按位減)的運算,而不是矩陣乘法的運算,矩陣乘法需要維度之間嚴(yán)格匹配;
- 如果矩陣乘法 numpy.dot(A, B) 維度不匹配時,提示的錯誤不是 broadcast 而是 aligned
- 一維數(shù)組置于矩陣乘法的左邊,被視為一個行向量
- 一維數(shù)組置于矩陣乘法的右邊,被視為一個列向量
- (這樣和一個一維數(shù)組作用無論是在左還是在右)矩陣乘法運算結(jié)束得到的向量仍是一維數(shù)組
"""