在循环中在Python中添加Matrix

Que*_*ons 5 python arrays loops numpy append

我有一个大小为(3,3)的矩阵y.假设它是一个3乘3矩阵,所有元素= 1.

然后我有一个循环来创建多个(3,3)矩阵.所以这些是输出:

第一个循环我得到这个矩阵:

 [[  88.    42.5    9. ]
 [ 121.5   76.    42.5]
 [ 167.   121.5   88. ]]
Run Code Online (Sandbox Code Playgroud)

我得到的第二个循环:

 [[  88.    42.5   13. ]
 [ 117.5   72.    42.5]
 [ 163.   117.5   88. ]]
Run Code Online (Sandbox Code Playgroud)

所以我想要实现的基本上是

 [[1, 1, 1] [88, 42.5, 9] [88, 42.5, 13],
 [1, 1, 1] [121.5, 76, 42.5] [117.5, 72, 42.5],
 [1, 1, 1] [167, 121.5, 88] [163, 117.5, 88]]
Run Code Online (Sandbox Code Playgroud)

这假设循环迭代两次,我不确定我是否在正确的位置放置了逗号或间距等,但理想情况下我获得了一个3乘3的矩阵,每个元素都有一个包含3个元素的列表.

到目前为止我的循环代码是(Up_xyz,Mid_xyz,Down_xyz以[x,x,x]格式输出):

for i in range (1,len(PeopleName)):       
  x = np.vstack((Up_xyz(TempName[i]),Mid_xyz(TempName[i]),Down_xyz(TempName[i])))
restA.append(x)
l+=1
Run Code Online (Sandbox Code Playgroud)

结果如下:

   [array([[  88. ,   42.5,   13. ],
   [ 117.5,   72. ,   42.5],
   [ 163. ,  117.5,   88. ]])]
Run Code Online (Sandbox Code Playgroud)

这只是循环最后一次迭代的值.

此外,当我将y附加到restA时

print(y.append(restA))
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

'numpy.ndarray' object has no attribute 'append'
Run Code Online (Sandbox Code Playgroud)

我认为这是由于尺寸的不同.但是我会感谢任何帮助,而且我对Python很新,所以对任何其他更高效的方式都是开放的.谢谢

Luc*_*ckk 1

您应该在 for 循环中附加

for i in range (1,len(PeopleName)):       
    x = np.vstack((Up_xyz(TempName[i]),Mid_xyz(TempName[i]),Down_xyz(TempName[i])))
    restA.append(x)
l+=1
Run Code Online (Sandbox Code Playgroud)

Numpy 数组对象没有追加方法。你可能想要:

y = np.append(y, restA)
Run Code Online (Sandbox Code Playgroud)