我有一个函数,给我一个17 * 3的矩阵(浮点数(17,3))。我在循环中一次又一次地调用该函数,我想添加矩阵,以使行保持17,而列继续添加,以形成一个大矩阵。
答案 0 :(得分:0)
首先转置矩阵,因为您不会触摸17行。
# a matrix is 17 * 3
a_transpose = [[a[j][i] for j in range(len(a))] for i in range(len(a[0]))]
然后,将17行的列添加为17列的一行
a_transpose.append([1,2,3, ... 17])
添加完几行后,如上所述将矩阵转回。这样,每次在矩阵中添加一列时,您就不会重复遍历数组17次。
转置
# a matrix is 17 * 3
a = numpy.array(a)
a_transpose = a.transpose()
添加一行(您要添加的17个列值)
a_transpose.append([1,2,3, .... 17], axis=0)
答案 1 :(得分:0)
您的功能:
In [187]: def foo(i):
...: return np.arange(i,i+6).reshape(3,2)
...:
迭代生成数组列表:
In [188]: alist = []
In [189]: for i in range(4):
...: alist.append(foo(i))
...:
In [190]: alist
Out[190]:
[array([[0, 1],
[2, 3],
[4, 5]]), array([[1, 2],
[3, 4],
[5, 6]]), array([[2, 3],
[4, 5],
[6, 7]]), array([[3, 4],
[5, 6],
[7, 8]])]
从该列表中创建一个数组:
In [191]: np.concatenate(alist, axis=1)
Out[191]:
array([[0, 1, 1, 2, 2, 3, 3, 4],
[2, 3, 3, 4, 4, 5, 5, 6],
[4, 5, 5, 6, 6, 7, 7, 8]])