我有一个矩阵P
与形状MxN
和三维张量T
与形状KxNxR
.我想P
与每个NxR
矩阵相乘T
,产生一个KxMxR
3d张量.
P.dot(T).transpose(1,0,2)
给出了期望的结果.有没有更好的解决方案(即摆脱transpose
)这个问题?这必须是一个非常常见的操作,所以我假设,其他人已经找到了不同的方法,例如使用tensordot
(我试过但未能获得所需的结果).意见/观点将受到高度赞赏!
我正在开发一个需要处理三维大阵列的项目.我使用的是numpy 3d数组,但我的大多数条目都是零,所以这是很多内存的浪费.Scipy稀疏似乎只允许2D矩阵.有没有其他方法可以存储3D稀疏数组?
a=np.zeros((3,3,3))
b=np.arange(3)
c=np.arange(9).reshape(3,3)
Run Code Online (Sandbox Code Playgroud)
我想将数组的元素b
或c
沿着 3d 矩阵(张量)的对角线(或对角线上方/下方)a
相对于特定轴放置。
我累了numpy.diagflat
,但它只适用于二维矩阵。
例如,如何制作以下矩阵?
array([[[ 0., 0., 0.],
[ 0., 1., 0.],
[ 0., 0., 2.]],
[[ 0., 0., 0.],
[ 0., 1., 0.],
[ 0., 0., 2.]],
[[ 0., 0., 0.],
[ 0., 1., 0.],
[ 0., 0., 2.]]])
Run Code Online (Sandbox Code Playgroud)