numpy[2]

作者: RJ阿杰 | 来源:发表于2018-09-11 16:40 被阅读0次

    numpy1
    numpy2
    numpy3

    數組的操作

    基本索引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
    重複
    • 重複
      numpy.tile
      numpy.repeat
      沿著axis重複[第一個值重複的次數,第二個值重複的次數] 由內而外(第三層重複的次數,第二層重複的次數,第一層重複的次數)
    添加和插入和刪除
    • 添加
    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)=3x^2+5y+16,(1≤x≤3),(4≤y≤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()

    相关文章

      网友评论

          本文标题:numpy[2]

          本文链接:https://www.haomeiwen.com/subject/eebugftx.html