如何在最后两个维度上应用函数?例如。我生成了一个低于 (2,3,3) 维度的数组,生成的数组应该具有与函数应用于 a[0,:,:] 和 a[1,:,:] 相同的维度。我知道我可以使用
for
循环,但可能有专门用于这些类型操作的内置函数吗?
a = np.arange(18).reshape(2,3,3)
c = []
for i in range(2):
c.append(np.linalg.pinv(a[i,:,:]))
result = np.array(c)
这里我使用了
np.linalg.pinv
但假设一个通用函数 f: (n,k)-> (n,k)
。
尝试:
a = np.arange(18).reshape(2, 3, 3)
a = np.linalg.pinv(a[np.arange(2), :, :])
print(a)
打印:
[[[-5.55555556e-01 -1.66666667e-01 2.22222222e-01]
[-5.55555556e-02 1.98795266e-16 5.55555556e-02]
[ 4.44444444e-01 1.66666667e-01 -1.11111111e-01]]
[[-1.30555556e+00 -1.66666667e-01 9.72222222e-01]
[-5.55555556e-02 1.31569730e-15 5.55555556e-02]
[ 1.19444444e+00 1.66666667e-01 -8.61111111e-01]]]