在最后两个维度上应用函数

问题描述 投票:0回答:1

如何在最后两个维度上应用函数?例如。我生成了一个低于 (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)

python numpy multidimensional-array
1个回答
1
投票

尝试:

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]]]
© www.soinside.com 2019 - 2024. All rights reserved.