对数组增加一行或一列很简单,网上一搜一大把的事例。比如增加一行或一列:
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.]