1. 程式人生 > >numpy數組合並[np.c_, np.r_, no.column_stack]

numpy數組合並[np.c_, np.r_, no.column_stack]

《驚蟄》 誰提了劍嫁衣勾破 披身貧賤夜色 把殺機淹沒

np.r_, np.c_

在實際資料處理中,操作的都是二維資料,因此此處講的都是最簡單的形式。

np.c_

等同於np.r_[’-1’, array, array],相當於在最後一個軸上進行資料合併, shape的最後一維. 對於二維來說最後一個軸就是列, 第一個軸就是行

    a = np.array([[0, 1, 2], [3, 4, 5]])
    np.c_[a, a]
    
    # out: 
    '''
    array([[0, 1, 2, 0, 1, 2],
       [3, 4, 5, 3, 4, 5]])
       '''
np.r_['-1', a,a] # out: ''' rray([[0, 1, 2, 0, 1, 2], [3, 4, 5, 3, 4, 5]]) ''' # 再看一個例子: np.c_[np.array([[1,2,3]]), 0, 0, np.array([[4,5,6]])] # 注意輸出: ''' array([[1, 2, 3, 0, 0, 4, 5, 6]]) '''

np.r_[‘param’, array[,array,…]]

param:

  • -1 按最後一個軸合併, <=>np.c_[array[,array,...]]
  • 0 按第一個軸合併
    a = np.array([[1,2,3]])
    
    a
   ''' array([[1, 2, 3]])'''
    
    np.r_['-1', a, a]
    '''
    array([[1, 2, 3, 1, 2, 3]])
    '''
   np.r_['0', a, a]
   
   '''
   array([[1, 2, 3],
       [1, 2, 3]])
   '''
 

重點:

好吧,這個得好好理解,但是專案最常用的就是想一個二維陣列中新增行,或者列 1、將一個一維數組合併為一個二維陣列的列, 向一個二維陣列中新增一個新的列,比如新增一個新的屬性,或特徵值

    a = np.array([[1, 2, 3], [4, 5, 6]])
   # 2 * 3的二維陣列
   a

out:

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

    # 新增新的列
	add_columns = [7, 8]
	# option 1:
	np.c_[a, add_columns]
	# option 2
	np.column_stack((a, add_columns))

out:

array([[1, 2, 3, 7], [4, 5, 6, 8]])

  1. 向二維陣列新增行,比如新增一個新的樣本 這個比較煩, 如果新增的陣列不是二維陣列,得先轉化為二維陣列
 add_rows = [7, 8, 9]
 add_rows = np.array(add_rows).reshape(1, -1)
 
 add_rows
 # out:  
 '''array([[7, 8, 9]])'''
 
 np.concatenate((a, add_rows), axis=0)
#out:
'''array([[1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]])
'''  
 
 np.r_['0', a , add_rows]
 #out:
 '''array([[1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]])
 '''