gpt4 book ai didi

python - 在 Python 中获取集合的值

转载 作者:太空宇宙 更新时间:2023-11-03 16:49:18 25 4
gpt4 key购买 nike

我有 6 个数组,比如说 a,b,c1,d1,c2,d2

数组a和b有一些常见的c1,c2d1,d2对。我发现这些常见的对,即具有相同 c1,d1c2,d2a 和 b,如下所示:

data_zcosmo_lastz = a
data_zphot_lastz = b
halo_id_zcosmo = c1
halo_id_zphot = c2
idrep_zcosmo = d1
idrep_zphot = d2


file2freq1 = Counter(zip(c1,d1))
file2freq2 = Counter(zip(c2,d2))

set_a = set(file2freq1) & set(file2freq2) # common objects

上面的代码让set_a具有c1,d1c2,d2的公共(public)值。

但是如何获取set_aa和b的值?

即我想要 set_aab 值。

示例

a = [1,2,3,4,5]
b = [2,3,4,5,6]
c1 = [1,1,1,2,2]
d1 = [3,3,3,4,4]
c2 = [1,1,2,2,2]
d2 = [3,3,1,4,4]

so set_a = [(1,3),(1,3),(2,4),(2,4)]

现在我想要具有这些对的 a 和 b 值。即

a = [1,2,4,5] and b = [2,3,5,6]

最佳答案

仍然没有 100% 满足你的要求。据我了解这个问题,您想要 a 的元素和bc1 的元素所在的位置和d1c2 相同和d2分别。

在本例中,使用 setCounter不会有帮助,因为这会删除该职位的任何信息。相反,只需 zip所有这些列表一起...

for a_, b_, c1_, d1_, c2_, d2_ in zip(a,b,c1,d1,c2,d2):
if (c1_,d1_) == (c2_,d2_):
print(a_, b_)

...或者只是zip c1,d1,c2,d2列出并使用 enumerate获取位置:

idx = [i for i, t in enumerate(zip(c1,d1,c2,d2)) if t[:2] == t[2:]]
print([(a[i], b[i]) for i in idx])
<小时/>

或者,您也可以使用numpy为此,将数组转换为 numpy.arrays 后做例如A = np.array(a)等等。

>>> match = np.logical_and(C1 == C2, D1 == D2)
>>> match
array([ True, True, False, True, True], dtype=bool)
>>> A[match]
array([1, 2, 4, 5])
>>> B[match]
array([2, 3, 5, 6])

关于python - 在 Python 中获取集合的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36016942/

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