Python 为矩阵数学匹配矩阵大小

Python 为矩阵数学匹配矩阵大小,python,numpy,matrix,matrix-multiplication,Python,Numpy,Matrix,Matrix Multiplication,我正在尝试使用numpy执行矩阵数学。我有一个我期望的2x2x401矩阵,我正试图使用np.add()将其添加到标识矩阵中。在代码中,我尝试过: result = [] self.data = x #where x is a 2x2x401 np array z_sqrt = np.identity(2) for x in range(401): result.append(np.add(z_sqrt,self.data[:][:][x])) #if the above give

我正在尝试使用numpy执行矩阵数学。我有一个我期望的2x2x401矩阵,我正试图使用
np.add()
将其添加到标识矩阵中。在代码中,我尝试过:

result = []
self.data = x #where x is a 2x2x401 np array
z_sqrt = np.identity(2)
for x in range(401):
    result.append(np.add(z_sqrt,self.data[:][:][x]))
    #if the above gives me errors because of how I'm assigning it, I'm not there yet
我得到的错误是:

ValueError: operands could not be broadcast together with shapes (2,2) (2,401)

请尝试以下可能有帮助的方法

result = x + np.atleast_3d(np.identity(2))
其中
x
是您的(2,2401)数组。上述操作应直接作用于整个阵列,而无需使用for循环,因此您可以在一个线性中获得形状(2,2401)的
结果。或者,您也可以尝试以下方法

result = x + (np.identity(2)[:,:,np.newaxis])

您能在python for循环中显示您的意图吗?我不确定你期望得到什么结果。另外,请尽量减少示例。如果一个轴没有400+,则更容易显示elements@MadPhysicist在python循环中显示我的意图是什么意思?不清楚您希望得到什么结果。通常,对于这类问题,人们会写出实现他们期望的嵌套for循环,以避免任何可能的歧义。然后,我将向您展示如何对循环进行矢量化。
[:]
什么都不做。如果要在3d数组的最后一个维度上进行迭代,请使用
数据[:,:,x]
。当您说不使用循环时,您不是指我用于循环401次的for循环,是吗?是的,我是指您在示例中使用的for循环,(
用于范围内的x(401)…
)。上述解决方案应直接为您提供
结果
数组。我对答案进行了编辑,以便更加清晰。嗯,我没有考虑在矩阵计算中包括第三个轴。谢谢欢迎,也请不要忘记对答案进行投票:)