numpy.c_和numpy.r_的區別及用法

  1. numpy.c_:

將切片對象沿第二個軸(按列)融合數組。

np.c_[np.array([1,2,3]), np.array([4,5,6])]

array([[1, 4], #輸出結果
       [2, 5],
       [3, 6]])
np.c_[np.array([[1,2,3]]), 0, 0, np.array([[4,5,6]])]#注意括號裏面的方括號個數

array([[1, 2, 3, 0, 0, 4, 5, 6]]) #輸出結果
  1. numpy.r_:

將切片對象沿第一個軸(按行)融合數組。

 np.r_[np.array([1,2,3]), 0, 0, np.array([4,5,6])]
 
 array([1, 2, 3, 0, 0, 4, 5, 6]) #輸出結果

注意:在numpy中,一個array的顯示雖然是橫着表示的,但它是列向量。

簡單地總結一下用法就是:
  np.r_是按行連接兩個或多個矩陣,就是把矩陣上下相連,要求列數相等,類似於pandas中的concat()
  np.c_是按列連接兩個或多個矩陣,就是把矩陣左右相連,要求行數相等,類似於pandas中的merge()
簡單記錄一下,備忘

  1. numpy.r擴展

  numpy.r_是將一系列的序列合併到一個數組中,調用是要用中括號[],而不是()。
它有兩種類型的參數,放在最前面的控制參數,以及後面逗號分開的要合併的序列。
控制參數其他的情況都很好理解,本文主要解釋控制參數中包含了3個數的情況,第3個參數的作用。
其中第3個參數是用來控制後面序列的upgrade方式的,由於第二參數控制了最小的維度,後面的序列參數中可能需要一些維度提升才能進行合併。所以第三個參數控制的是提升的這個維度的放在序列的維度元祖中的位置,‘0’放在最後,‘1‘放到最前。 如

np.r_['0,2,0', [1,2,3],[4,5,6]]
#這個代碼片段的控制參數0表示將在第一個維度對後面的序列進行合併,控制參數第二數2表示,合併後的結果最少要2維
#所以在合併前對維度較少的序列進行維度提升。而這個提升的方式則是有第3個參數決定的,後面兩個序列的維度是(3,)
#由於三個參數是0,所以提升的維度在序列的維度元組中位置是0(即在維度數組的0號位置添加1),即提升後的維度爲
#(3,1),所以提升後的第一個序列應該爲[[1],[2],[3]],所以最後的結果是[[1],[2],[3],[4],[5],[6]]
np.r_['0,2,1', [1,2,3],[4,5,6]] #則提升後應該爲[[1,2,3]],所以結果爲[[1,2,3],[4,5,6]]

在這裏插入圖片描述

發佈了46 篇原創文章 · 獲贊 42 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章