numpy[2]

數組的操作

基本索引array[ ]

一. [一維(由0開始數)][二維(由0開始數)]

二. [負號表示由後往回數第幾個(由1開始數)]

三. 由索引修改數組的值

**四.**返回數組中的非零索引的展開。
numpy.flatnonzero
numpy.nonzero

切片array[::]
  • 切片array[::]
    使用切片時並非重新複製資料,而是傳回子陣列的視圖,想重新複製出資料須使用array[::].copy()。
    注意:row、column都以0為起始列。
    注意:[:]以及[::]的不同,[::-1]第3個值-1表示翻轉。
    1 1 2

  • 切片array[[ ]]
    指定某row、column索引 使用bool索引,必須傳入相應的shape

  • mask與條件切片
    條件切片會傳回一個bool數組,也可以搭配numpy.flatnonzeronumpy.where索引指定條件的切片。
    什麼是掩碼數組?
    mask
    在許多情況下,數據集可能不完整或因無效數據的存在而受到污染。例如,傳感器可能無法記錄數據或記錄無效值。該numpy.ma模塊通過引入掩碼數組提供了一種解決此問題的便捷方法。
    條件索引與mask 條件索引 條件索引

  • 查找NAN值
    np.nan需要使用numpy.isnan查詢。
    查找nan值 修改nan值

重塑
  1. np.reshape()
  2. np.ndarray.flatten(order=‘C’)
    order:‘C’ 按行,‘F’ 按列,‘A’ 原順序展開成一維。
  3. np.transpose(arr, axes)
    與reshape不同,依照原本維度改變形狀。
    arr:要轉置的數組
    axes:整數的列表,對應維度,默認所有維度都會翻轉。
  4. numpy.matrix
  5. numpy.asarray
轉置(翻轉)
  1. np.transpose(arr, axes)
    arr:要轉置的數組
    axes:整數的列表,對應維度,默認所有維度都會翻轉。
  2. ndarray.T
組合與分割
  • 串接:多維數組連接的過程中要注意連接軸的大小相同。
  1. np.concatenate()
  • 一維
  • 二維
  1. np.row_stacknp.column_stack

  2. np.hstacknp.vstack

  • 分割
  1. numpy.split(ary, indices_or_sections, axis)
    ary:被分割的輸入數組
    indices_or_sections:此參數為整數,表示要分割為幾分等大小數組。此參數為一維數組,則表示要分割的位置。
    axis:默認為 0
    1 2
重複
添加和插入和刪除
  • 添加
  1. np.append(arr, values, axis)
    添加數組中某個位置或某軸的值
    arr:輸入數組
    values:要添加的值
    axis:沿著它完成操作的軸。如果未提供,則輸入數組會被展開
  • 插入
    插入數組中某個位置或某軸的值
  1. numpy.insert(arr, obj, values, axis)
    arr:輸入數組
    obj:在其之前插入值的索引
    values:要插入的值
    axis:沿著它插入的軸,如果未提供,則輸入數組會被展開
  • 刪除
  1. Numpy.delete(arr, obj, axis)
    刪除數組中某個位置或某軸的值
    arr:輸入數組
    obj:可以使用切片,整數或者整數數組,表示要從輸入數組刪除的子數組
    axis:沿著它刪除給定子數組的軸,如果未提供,則輸入數組會被展開

  2. numpy.unique(arr, return_index, return_inverse, return_counts)
    結果為刪除**重複(重覆)**數組,並排列。
    arr:輸入數組,如果不是一維數組則會展開
    return_index:如果為true,返回結果(新數組)以及結果對應原數組的原數組索引
    return_inverse:如果為true,返回結果以及結果的新數組對應原數組的新數組索引
    return_counts:如果為true,返回結果以及結果的重複次數

網格
  1. np.meshgrid()
    通常使用在數據的矢量化上。它適用於生成網格型數據,可以接受兩個一維數組生成兩個二維矩陣,對應兩個數組中所有的(x,y)對。
  2. np.mgrid()
    與meshgrid類似,但可以處理多維。

f ( x , y ) = 3 x 2 + 5 y + 16 , ( 1 x 3 ) , ( 4 y 6 ) f(x,y)=3x^2+5y+16,(1≤x≤3),(4≤y≤6)
f ( a , b ) = 3 a 2 + 5 b + 16 , ( 1 a 3 ) , ( 4 b 6 ) f(a,b)=3a^2+5b+16,(1≤a≤3),(4≤b≤6)

  • meshgrid
    1 2
    z=x+y

  • mgrid
    1 2 3

排序

NumPy中提供了各種排序相關功能。這些排序函數實現不同的排序算法,每個排序算法的特徵在於執行速度,最壞情況性能,所需的工作空間和算法的穩定性。下表顯示了三種排序算法的比較。

種類 速度 最壞情況 工作空間 穩定性
‘quicksort’(快速排序 1 O(n^2) 0
‘mergesort’(歸併排序(混排)) 2 O(n*log(n)) ~n/2
‘heapsort’(堆排序 3 O(n*log(n)) 0
  1. numpy.sort(a, axis, kind, order)
    將數組進行排序,返回排序好的數組
    a:要排序的陣列
    axis:沿著它排序陣列的軸,如果沒有陣列會被展開,沿著最後的軸排序
    kind:默認為’quicksort’(快速排序)
    order:如果陣列dtype包含’names’,則是要排序dtype的’names’
    1 2

  2. numpy.argsort(a, axis, kind, order)
    將數組進行排序,返回排序好結果對應原數組的原數組索引
    a:要排序的陣列
    axis:沿著它排序陣列的軸,如果沒有陣列會被展開,沿著最後的軸排序
    kind:默認為’quicksort’(快速排序)
    order:如果陣列dtype包含’names’,則是要排序dtype的’names’
    1 2

  3. numpy.partition()
    選定一個pivot只進行一次的快速排序,以pivot進行分區。輸入pivot為排序後的第幾個數,傳回分區好的數組。

  4. numpy.argpartition()
    選定一個pivot只進行一次的快速排序,以pivot進行分區。輸入pivot為排序後的第幾個數,傳回分區好的結果對應原數組的原數組索引。

  5. numpy.searchsorted(a, v, side=‘left’, sorter=None)
    a:所需排序的數組
    v:待查詢索引的元素值
    side:查詢索引時的方向,其中:′left′為從左至右;′right′為從右至左
    sorter:一個字符串或列表,可以設置按照某個屬性進行排序
    另類用法:將數值分組
    利用searchsorted特性可以用來分組以及計數

計數

  • 計數
  1. 一般我們常用使用Python內建collections.Counter

  2. np.count_nonzero

  3. np.add.at()

猜你喜欢

转载自blog.csdn.net/qq_33768941/article/details/86512749
今日推荐