gpt4 book ai didi

python - 在 3D 矩阵上广播 linalg.pinv

转载 作者:太空宇宙 更新时间:2023-11-03 17:11:11 27 4
gpt4 key购买 nike

在下面的示例中,有一个大小为 (4, 3, 3) 的 3d 矩阵。如何在 numpy 中没有循环的情况下计算 4 个 3*3 矩阵中每一个的 pinv?

dt = np.dtype(np.float32)

a=[[[12,3,1],
[2,4,1],
[2,4,2],],
[[12,3,3],
[2,4,4],
[2,4,5],],
[[12,3,6],
[2,4,5],
[2,4,4],],
[[12,3,3],
[2,4,5],
[2,4,6]]]

a=np.asarray(a,dtype=dt)
print(a.shape)

apinv=np.zeros((4,3,3))
print(np.linalg.pinv(a[0,:,:]).shape)

for i in range(4):
apinv[i,:,:]=np.linalg.pinv(a[i,:,:])

请注意,linalg.inv 通过描述的矩阵进行广播 here :

print(np.linalg.inv(a).shape)

但是 pinv 的工作方式不同。

最佳答案

一种解决方案是使用映射和 lambda 函数:

apinv = map(lambda n: np.linalg.pinv(n), a)
apinv = np.asarray(apinv,dtype=dt)

关于python - 在 3D 矩阵上广播 linalg.pinv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34073761/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com