Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何在5-d numpy矩阵中旋转时间序列?_Python 3.x_Numpy_Numpy Ndarray_Numpy Einsum - Fatal编程技术网

Python 3.x 如何在5-d numpy矩阵中旋转时间序列?

Python 3.x 如何在5-d numpy矩阵中旋转时间序列?,python-3.x,numpy,numpy-ndarray,numpy-einsum,Python 3.x,Numpy,Numpy Ndarray,Numpy Einsum,我正在尝试旋转一个numpy nd阵列中的一些地震数据。该阵列具有N个接收器、M个源、3个源_通道、3个接收器通道和K个时间通道 我知道如何设置旋转,如果应用于单个接收器和单个源站上的单个时间戳t_I。实际的Z,R,T,N,E表示法对于一般问题并不重要,只需知道转换的定义如下: 在python中,对于单个时间戳,我可能会编写如下代码: 将numpy作为np导入 a=50.0示例alpha b=130例β a_旋转=np.asarray[[1,0,0],[0,np.cosa,np.sina],[0

我正在尝试旋转一个numpy nd阵列中的一些地震数据。该阵列具有N个接收器、M个源、3个源_通道、3个接收器通道和K个时间通道

我知道如何设置旋转,如果应用于单个接收器和单个源站上的单个时间戳t_I。实际的Z,R,T,N,E表示法对于一般问题并不重要,只需知道转换的定义如下:

在python中,对于单个时间戳,我可能会编写如下代码:

将numpy作为np导入 a=50.0示例alpha b=130例β a_旋转=np.asarray[[1,0,0],[0,np.cosa,np.sina],[0,-np.sina,np.cosa]] b_旋转=np.asarray[[1,0,0],[0,-np.cosb,-np.sinb],[0,np.sinb,-np.cosb]] 假设zn是实际的浮点数据 单时间片数据=np.asarray[[zz,zn,ze],[nz,nn,ne],[ez,en,ee]] 矩阵旋转运算 旋转的\u通道=a\u旋转@单\u时间片\u数据@b\u旋转 所以我的问题有两个:

如何在所有时间步中使用numpy应用此矩阵产品? 例:3x3*3x3xk*3x3

当可能存在任意数量的其他维度时,如何使用numpy进行矩阵积? 例:3 x 3*N x M x 3 x 3 x K*3 x 3 3x3*3x3*K*3*3=3x3xk

二, 3 x 3*N x M x 3 x 3 x K*3 x 3=N x M x 3 x 3 x K

@的基本原理是它在最后两个维度上进行点乘和矩阵乘法,并将所有早期维度视为“批量”维度,遵守正常的numpy广播规则。
np.einsum('ab,bcK,cd->adK', Arr1, Arr2, Arr3)
np.einsum('ab,NMbcK,cd->NMadK', Arr1, Arr2, Arr3)