gpt4 book ai didi

python - 如何从python中的nd数组中提取特定行

转载 作者:太空宇宙 更新时间:2023-11-04 04:36:50 26 4
gpt4 key购买 nike

我有一个数组b,它的形状是E x B x 3。我有另一个数组 a,它指定了 b 中的哪 3 个元素。

以下代码有效(在此示例中 E=2, B=4):

import numpy as np

a = [1, 1, 0, 0]
b = np.array([[[1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0], [0.0, 0.0, 3.0]],
[[2.0, 0.0, 0.0], [0.0, 2.0, 0.0], [0.0, 0.0, 2.0], [0.0, 0.0, 3.0]]])
# n_pred = np.transpose(n_pred, axes=[1, 0, 2])
c = []
for i, idx in enumerate(a):
c.append(b[idx, i])
c = np.array(c)
print(c)

我的问题是,有没有更有效的方法来做到这一点? (也许使用一些内置的 numpy 函数?

最佳答案

您可以按前两个维度进行索引:

c = b[a, range(len(a))]

print(c)

array([[ 2., 0., 0.],
[ 0., 2., 0.],
[ 0., 0., 1.],
[ 0., 0., 3.]])

关于python - 如何从python中的nd数组中提取特定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51478920/

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