假設我定義一個2×2矩陣使用numpy的:我該如何合併在Python 2列
array([[1, 2],
[2, 3]])
現在其他的2×1矩陣:
array([[3],
[4]])
我如何通過串聯這兩個矩陣列,所以它會變成:
array([[1, 2, 3],
[2, 3, 4]])
而我該如何刪除指定列,以便它將成爲
array([[1],
[2]])
假設我定義一個2×2矩陣使用numpy的:我該如何合併在Python 2列
array([[1, 2],
[2, 3]])
現在其他的2×1矩陣:
array([[3],
[4]])
我如何通過串聯這兩個矩陣列,所以它會變成:
array([[1, 2, 3],
[2, 3, 4]])
而我該如何刪除指定列,以便它將成爲
array([[1],
[2]])
有一個numpy.concatenate
method
import numpy as np
np.concatenate([ np.array([ [1,2], [2,3] ]), np.array([ [3],[4] ]) ] , axis = 1)
或簡單地使用hstack
或vstack
np.hstack([ np.array([ [1,2], [2,3] ]), np.array([ [3],[4] ]) ])
這些也可以用於除去塔(連接兩個子陣列) - 這可以是用於刪除多列。
要刪除第i列,您可以將子排列陣列添加到此列,並從下一列開始,並將它們連接起來。例如,以除去第二塔(索引1
):
a - np.array([ [1,2,3], [2,3,4] ])
a1= a[:,:1]
a2= a[:,2:]
np.hstack([a1,a2])
所以一般
def remove_column(a, i):
return np.hstack([a[:,:i], a[:,(i+1):] ])
然後
>>> remove_column(a, 1)
array([[1, 3],
[2, 4]])
>>> remove_column(a, 0)
array([[2, 3],
[3, 4]])
其實,在註釋中指出 - numpy的實現其自己delete
方法
np.delete(a, 1, 1)
刪除第二列
和刪除多個的可使用
np.delete(a, [column1, columne2, ..., columnK], 1)
第三個參數是在軸描述符,0
將意味着行,1
列來執行,None
flatterns整個陣列
您可以使用numpy.hstack
:
>>> import numpy as np
>>> a = np.array([[1,2], [2,3]])
>>> b = np.array([[3], [4]])
>>> np.hstack((a,b))
array([[1, 2, 3],
[2, 3, 4]])
卸下是更加簡單,只要切開:
>>> c = a[:,:1]
array([[1],
[2]])
In [3]: x = np.array([[1, 2], [2, 3]]
In [4]: y = np.array([[3], [4]])
In [9]: z = np.hstack([x, y])
In [10]: z
Out[10]:
array([[1, 2, 3],
[2, 3, 4]])
In [11]: z[:,:1]
array([[1],
[2]])
它報告錯誤:ValueError異常:所有除級聯軸輸入數組尺寸必須匹配錯字恰好 – liumilan
抱歉,應該是'軸= 1 ' – lejlot
thanks.Now添加列使用hstack working.But我仍然迷惑與刪除指定的列,你能給更多的細節 – liumilan