gpt4 book ai didi

python - 如何用另一个 ndarray 索引一个 ndarray ?

转载 作者:太空宇宙 更新时间:2023-11-03 21:19:01 28 4
gpt4 key购买 nike

我正在 python/numpy 中做一些机器学习工作,其中我想用一维 ndarray 索引一个二维 ndarray,这样我就可以得到一个带有索引值的一维数组。

我让它与一些丑陋的代码一起工作,我想知道是否有更好的方法,因为对于像 python+numpy 这样好的语言和模块组合来说,这似乎不自然。

   a = np.arange(50).reshape(10, 5) # Array to be indexed
b = np.arange(9, -1, -2) # Indexing array
print(a)
print(b)
print(a[b, np.arange(0, a.shape[1]).reshape(1,a.shape[1])])
#Prints:
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]
[20 21 22 23 24]
[25 26 27 28 29]
[30 31 32 33 34]
[35 36 37 38 39]
[40 41 42 43 44]
[45 46 47 48 49]]

[9 7 5 3 1]

[[45 36 27 18 9]]

这正是我想要的(即使技术上是二维数组),但这看起来非常复杂。有没有更整洁的方法?

编辑:澄清一下,我实际上并不想要一个一维数组,这解释得非常糟糕。我实际上确实想要长度为 1 的一维,因为这是我稍后处理它所需要的,但这可以通过 reshape() 语句轻松实现。抱歉造成混淆,我只是将实际代码与更一般的问题混合在一起。

最佳答案

您想要一个一维数组,但包含了一个 reshape 调用,其唯一目的是将数组从您想要的格式转换为您不想要的格式。

停止 reshape arange输出。此外,您不需要显式指定 0 起始值:

result = a[b, np.arange(a.shape[1])]

关于python - 如何用另一个 ndarray 索引一个 ndarray ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54451666/

28 4 0
文章推荐: python - 无法使用selenium python找到信用卡号码的元素
文章推荐: c# - 如何将 Dictionary 作为 XUnit 的 MemberData 需要的 IEnumerable 返回