Python 在循环外添加矩阵

Python 在循环外添加矩阵,python,numpy,Python,Numpy,我有一个函数,它给了我一个17*3的矩阵(float(17,3))。我在循环中一次又一次地调用该函数,我想添加矩阵,使行保持17,但列继续添加,以形成一个大矩阵。不使用NUMPY: 首先转置矩阵,因为你不会碰到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([

我有一个函数,它给了我一个17*3的矩阵(float(17,3))。我在循环中一次又一次地调用该函数,我想添加矩阵,使行保持17,但列继续添加,以形成一个大矩阵。

不使用NUMPY: 首先转置矩阵,因为你不会碰到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次迭代

对于NUMPY: 转置

# a matrix is 17 * 3
a = numpy.array(a)
a_transpose = a.transpose()
添加一行(要添加的17列值)

没有NUMPY: 首先转置矩阵,因为你不会碰到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次迭代

对于NUMPY: 转置

# a matrix is 17 * 3
a = numpy.array(a)
a_transpose = a.transpose()
添加一行(要添加的17列值)

你的职能:

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]])
你的职能:

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]])

是的,我使用了np.arrayYou可能可以使用
np.hstack(map(您的函数,带有您的输入的列表))
。添加示例输入和预期输出欢迎来到Stackoverflow!请查看本指南,了解如何创建一个最小的、完整的、可验证的示例,以便我们能够帮助您:是的,我使用了np.arrayYou可能可以使用
np.hstack(map(您的函数,带有您的输入的列表))
。添加示例输入和预期输出欢迎来到Stackoverflow!请查看本指南,了解如何创建一个最小、完整且可验证的示例,以便我们可以帮助您:注意这里。第一种方法可能有效,因为
a_transpose
是一个列表,而列表有一个
append
方法。第二种方法不起作用,因为数组没有append方法。而且你不应该在它的位置使用
np.append
。注意这里。第一种方法可能有效,因为
a_transpose
是一个列表,而列表有一个
append
方法。第二种方法不起作用,因为数组没有append方法。而且你不应该使用
np.append来代替它。