gpt4 book ai didi

Python - 唯一确定元素源自哪个文本文件

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

我使用 numpy 和代码加载三个单独的文本文件:

str = 'data'
Di = np.loadtxt(str+'i.txt', dtype=np.float64)
Dj = np.loadtxt(str+'j.txt', dtype=np.float64)
Dk = np.loadtxt(str+'k.txt', dtype=np.float64)

文本文件包含具有 2 列和大约 6000 行的二维数据(它们都包含 2 列,但行数是可变的)。给定一个元素 [a,b] - 我如何唯一地确定它源自哪个文本文件?

尽管我不能完全确保元素是唯一的,数字[a,b]可能同时出现在(例如)datai 和 dataj 文本文件中 - 但可能性很小,但我不能完全排除它。

编辑:

例如,加载文本文件会给出:

Di = [[1   4]      Dj = [[9   4]        Dk = [[2   4]       
[1 5] [5 5] [5 6]
[4 5] [3 6]] [4 7]]

datai.txt dataj.txt datak.txt

因此,给定元素 [1 4] ,输出将为 datai.txt,让我知道元素 [1 4] 的起源来自 datai.txt 文件。

最佳答案

类似于:

import numpy

Di = numpy.array([[1, 4], [1, 5], [4, 5]])

Dj = numpy.array([[9, 4], [5, 5], [3, 6]])

Dk = numpy.array([[2, 4], [5, 6], [4, 7]])
#>>>

next(array for array in [Di, Dj, Dk] if ([5, 5] == array).all(1).any())
#>>> array([[9, 4],
#>>> [5, 5],
#>>> [3, 6]])

如果您想要索引:

next(i for i, array in enumerate([Di, Dj, Dk]) if ([5, 5] == array).all(1).any())
#>>> 1

或名称:

next(k for k, array in {"Di":Di, "Dj":Dj, "Dk":Dk}.items() if ([5, 5] == array).all(1).any())
#>>> 'Dj'
<小时/>

([5, 5] == array).all(1).any()

是关键部分,确实如此(使用 [9, 4] 进行解释)

[9, 4] == array
#>>> array([[ True, True],
#>>> [False, False],
#>>> [False, False]], dtype=bool)

然后你全部沿着轴线穿过。

([9, 4] == Dj).all(1)
#>>> array([ True, False, False], dtype=bool)

然后检查是否有任何轴匹配。

<小时/>

next(array for array in [Di, Dj, Dk] if CONDITION)

创建一个仅包含满足 CONDITION 的数组的迭代器,next 获取第一个。

如果您不喜欢捕获 StopIteration,可以使用 next(..., Fallback)

关于Python - 唯一确定元素源自哪个文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18979290/

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