numpy的使用小結(jié)

數(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)

索引方法:字段訪問、基本切片和高級索引

基本切片

"""

  1. 通過將 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]
  2. 使用包括省略號 ... 來使選擇元組的長度與數(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ù)組
    """
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容