對數組增加一行或一列很簡單,網上一搜一大把的事例。比如增加一行或一列:
import numpy as np a = np.array([[1, 2, 3]]) row = a[0] col = a[0,1] b = np.row_stack((a, row)) c = np.column_stack((a, col)) print a.shape print b.shape print c.shape print b print c >>(1L, 3L) (2L, 3L) (1L, 4L) [[1 2 3] [1 2 3]] [[1 2 3 2]]
但如果我要增加多行或多列呢?比如我讀取了一行數據想和一個多行的數據做差,就得先將這行數據擴展為多行。那該怎么辦呢?其實很簡單。比如:
a = np.array([1, 2, 3, 4, 5]) b = np.array([[1, 1, 1, 1, 1], [2, 2, 2, 2, 2], [3, 3, 3, 3, 3], [4, 4, 4, 4, 4]])
我想計算a與b中每行元素的距離,就簡單的計算L1距離吧。但我又不想用for循環,想一步就求出a與b中每行元素的距離。上面的辦法肯定是不行的的,只需這樣就行了。
c = a*np.ones((4,5)) print c >>[[ 1. 2. 3. 4. 5.] [ 1. 2. 3. 4. 5.] [ 1. 2. 3. 4. 5.] [ 1. 2. 3. 4. 5.]]
此時求距離就一步搞定啦
distances = np.sum(abs(a*np.ones((4,5)) - b),axis=1) print distances >>[ 10. 7. 6. 7.]