将三维numpy阵列压缩为二维

2024-06-25 22:58:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试用两个numpy数组进行矩阵乘法,一个是2x2,另一个我想作为2x1处理,但是由于linspace变量,还有第三维。这使得不可能按我的意愿应用转换

代码:

import numpy as np 
t = 0
delt = 0
theta = 0
n = np.linspace(0,1,0.1)
E_z = np.exp((t - n) * 1j)
E_y = np.exp((t - n - delt) * 1j)
QW = np.array([[np.cos(theta)**2 + 1j * np.sin(theta)**2, (1 - 1j) * np.sin(theta) * np.cos(theta)], 
                  [1j * np.cos(theta)**2 + np.sin(theta)**2, (1 - 1j) * np.sin(theta) * np.cos(theta)]])
QW = np.multiply(QW, np.exp(-(pi/4) * 1j))
E = np.array([[E_y],[E_z]])
E = np.dot(QW, E)

收到的错误为

“ValueError:形状(2,2)和(2,1,14)未对齐:2(尺寸1)!=1(尺寸1)”

谢谢你的帮助


Tags: 代码numpy尺寸np矩阵数组sincos
1条回答
网友
1楼 · 发布于 2024-06-25 22:58:11

代码出了问题

E = np.array([[E_y],[E_z]])

这会告诉numpy您要堆叠2个10 x 1数组,从而生成2 x 1 x 10。去掉内括号会生成一个2 x 10数组。为了便于将来参考,可以使用.squeeze方法删除内部1维

import numpy as np 
t = 0
delt = 0
theta = 0
n = np.arange(0,1,0.1)
E_z = np.exp((t - n) * 1j)
E_y = np.exp((t - n - delt) * 1j)
QW = np.array([[np.cos(theta)**2 + 1j * np.sin(theta)**2, (1 - 1j) * np.sin(theta) * np.cos(theta)], 
                  [1j * np.cos(theta)**2 + np.sin(theta)**2, (1 - 1j) * np.sin(theta) * np.cos(theta)]])
QW = np.multiply(QW, np.exp(-(np.pi/4) * 1j))
E = np.array([E_y,E_z])
E = np.dot(QW, E)

相关问题 更多 >