gpt4 book ai didi

python - 根据其他两个数组中公共(public)值的索引从数组返回值

转载 作者:太空狗 更新时间:2023-10-30 00:55:20 25 4
gpt4 key购买 nike

import numpy as np

a=np.random.randint(0,200,100)#rand int array
b1=np.random.randint(0,100,50)
b2=b1**3
c=[]

我有一个我认为应该很容易但找不到解决方案的问题,我想在两个数组中找到匹配的值,然后使用其中一个数组的索引在另一个数组中找到值

for i in range(len(a)):
for j in range(len(b1)):
if b1[j]==a[i]:
c.append(b2[j])

c=np.asarray(c)

显然上面的方法是可行的,但是速度很慢,而且这只是一个例子,我实际做的a,b1,b2都是10000多个元素。

有没有更快的解决方案?

最佳答案

np.in1d(b1, a) 返回一个 bool 数组,指示是否在 a 中找到 b1 的每个元素。

如果你想获取 b2 中的值,这些值对应于 ab1 中的公共(public)值的索引,你可以使用索引 b2 的 bool 数组:

b2[np.in1d(b1, a)]

使用此函数应该快得多,因为 for 循环被下推到 NumPy 的内部例程级别。

关于python - 根据其他两个数组中公共(public)值的索引从数组返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29631504/

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