gpt4 book ai didi

python - 两个数组之间的按行比较

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

我是 Numpy 和 Python 新手,我有疑问。我希望你能帮助我。

比如说,我有两个数组。两个数组都有 11 列,第一列是索引。

这是 array1 的示例。顺便说一句,array1 将是一个不断更新的实时数组。

[(0, 537, 504, 547, 560, 553,  -92, -5132, 15972, 1, 1)
(0, 537, 504, 547, 559, 553, -100, -5128, 16108, 1, 1)
(0, 537, 504, 547, 560, 553, -124, -5088, 16092, 1, 1)
(0, 537, 504, 547, 559, 553, -140, -5160, 16164, 1, 1)
(0, 537, 504, 547, 560, 552, -112, -5320, 16072, 1, 1)
(0, 537, 504, 547, 560, 552, -24, -5092, 16092, 1, 1)
(0, 537, 504, 547, 560, 551, -148, -5104, 16108, 1, 1)
(0, 537, 504, 547, 560, 551, -92, -5136, 16092, 1, 1)
(0, 537, 504, 547, 560, 551, 4, -5032, 16076, 1, 1)
(0, 537, 504, 547, 560, 551, -60, -5096, 15944, 1, 1)
(0, 537, 504, 547, 560, 552, -48, -5084, 16072, 1, 1)
(0, 537, 504, 547, 560, 552, -48, -5084, 16072, 1, 1)
(0, 537, 504, 547, 560, 552, -48, -5084, 16072, 1, 1)
(0, 537, 504, 547, 560, 552, -48, -5084, 16072, 1, 1)]

我想将 array1 最后一行的值与 array2 的所有行进行比较。 (它必须是 array1 的最后一行,因为它的内容来自不断更新的 csv 文件)。我想搜索 array1 最后一行的非标签列和 array2 的所有非标签行之间最接近的行值。 array1 中的标签将为 null,并且不会计入比较中。它不一定是完全匹配,但我希望它能够在设定的容差范围内找到最接近的匹配。 array2 将充当排序字典,其标签充当引用,而这些单独标签的行中的特征充当样本。我这样做是正确的还是有更合适的方法来实现这一目标?我打算有 26 种不同类型的标签,代表 array2 中的 26 个字母,每个标签都有特定的列特征集。这 26 种类型的标签每种都有 10 个样本行。容差范围应由每个标签的 10 个 sample 来指示。这是 array2 中 csv 数据的示例(我已经可以将其转换为数组)。

LABEL,F1,F2,F3,F4,F5,X,Y,Z,C1,C2

1, 537, 504, 547, 560, 553, -92, -5132, 15972, 1, 1

1, 537, 504, 547, 559, 553, -100, -5128, 16108, 1, 1

1, 537, 504, 547, 560, 553, -124, -5088, 16092, 1, 1

1, 537, 504, 547, 559, 553, -140, -5160, 16164, 1, 1

1, 537, 504, 547, 560, 552, -112, -5320, 16072, 1, 1

1, 537, 504, 547, 560, 552, -24, -5092, 16092, 1, 1

1, 537, 504, 547, 560, 551, -148, -5104, 16108, 1, 1

1, 537, 504, 547, 560, 551, -92, -5136, 16092, 1, 1

1, 537, 504, 547, 560, 551, 4, -5032, 16076, 1, 1

1, 537, 504, 547, 560, 551, -60, -5096, 15944, 1, 1

2, 537, 504, 547, 560, 553, -92, -5132, 15972, 0, 0

2, 537, 504, 547, 559, 553, -100, -5128, 16108, 0, 0

2, 537, 504, 547, 560, 553, -124, -5088, 16092, 0, 0

2, 537, 504, 547, 559, 553, -140, -5160, 16164, 0, 0

2, 537, 504, 547, 560, 552, -112, -5320, 16072, 0, 0

2, 537, 504, 547, 560, 552, -24, -5092, 16092, 0, 0

2, 537, 504, 547, 560, 551, -148, -5104, 16108, 0, 0

2, 537, 504, 547, 560, 551, -92, -5136, 16092, 0, 0

2, 537, 504, 547, 560, 551, 4, -5032, 16076, 0, 0

2, 537, 504, 547, 560, 551, -60, -5096, 15944, 0, 0

1 是 A,2 是 B。如您所见,它们唯一的区别是最后两列中的 1 和 0。但是,字母表中的其他字母在多列中会有差异,这就是为什么我希望 array1 的最后一行在 array2 中搜索其最接近的匹配项。

我想在两个数组之间执行集体逐行比较。

最后,我想打印array2的标签,其特征与array1的最新行的特征最接近。由于 array1 中的输入将不断更新,如果 array1 的最后一行的值发生变化并对应于不同的标签,我希望它也能相应地实时更新。

再说一次,我是 Python 和 Numpy 的初学者,我不知道我是否正确地处理了这个问题。我希望你可以帮助我。先感谢您。我真的很感激任何帮助。

最佳答案

您的数组 A 和 B:

 A = np.array([(0, 537, 504, 547, 560, 553,  -92, -5132, 15972, 1, 1),
(0, 537, 504, 547, 559, 553, -100, -5128, 16108, 1, 1),
(0, 537, 504, 547, 560, 553, -124, -5088, 16092, 1, 1),
(0, 537, 504, 547, 559, 553, -140, -5160, 16164, 1, 1),
(0, 537, 504, 547, 560, 552, -112, -5320, 16072, 1, 1),
(0, 537, 504, 547, 560, 552, -24, -5092, 16092, 1, 1),
(0, 537, 504, 547, 560, 551, -148, -5104, 16108, 1, 1),
(0, 537, 504, 547, 560, 551, -92, -5136, 16092, 1, 1),
(0, 537, 504, 547, 560, 551, 4, -5032, 16076, 1, 1),
(0, 537, 504, 547, 560, 551, -60, -5096, 15944, 1, 1),
(0, 537, 504, 547, 560, 552, -48, -5084, 16072, 1, 1),
(0, 537, 504, 547, 560, 552, -48, -5084, 16072, 1, 1),
(0, 537, 504, 547, 560, 552, -48, -5084, 16072, 1, 1),
(0, 537, 504, 547, 560, 552, -48, -5084, 16072, 1, 1)])

B = np.array([[1, 537, 504, 547, 560, 553, -92, -5132, 15972, 1, 1],
[1, 537, 504, 547, 559, 553, -100, -5128, 16108, 1, 1],
[1, 537, 504, 547, 560, 553, -124, -5088, 16092, 1, 1],
[1, 537, 504, 547, 559, 553, -140, -5160, 16164, 1, 1],
[1, 537, 504, 547, 560, 552, -112, -5320, 16072, 1, 1],
[1, 537, 504, 547, 560, 552, -24, -5092, 16092, 1, 1],
[1, 537, 504, 547, 560, 551, -148, -5104, 16108, 1, 1],
[1, 537, 504, 547, 560, 551, -92, -5136, 16092, 1, 1],
[1, 537, 504, 547, 560, 551, 4, -5032, 16076, 1, 1],
[1, 537, 504, 547, 560, 551, -60, -5096, 15944, 1, 1],
[2, 537, 504, 547, 560, 553, -92, -5132, 15972, 0, 0],
[2, 537, 504, 547, 559, 553, -100, -5128, 16108, 0, 0],
[2, 537, 504, 547, 560, 553, -124, -5088, 16092, 0, 0],
[2, 537, 504, 547, 559, 553, -140, -5160, 16164, 0, 0],
[2, 537, 504, 547, 560, 552, -112, -5320, 16072, 0, 0],
[2, 537, 504, 547, 560, 552, -24, -5092, 16092, 0, 0],
[2, 537, 504, 547, 560, 551, -148, -5104, 16108, 0, 0],
[2, 537, 504, 547, 560, 551, -92, -5136, 16092, 0, 0],
[2, 537, 504, 547, 560, 551, 4, -5032, 16076, 0, 0],
[2, 537, 504, 547, 560, 551, -60, -5096, 15944, 0, 0]])

B 与 A 最后一行之间的差异

D = B - A[-1]

“最接近”始终是一个讨论,但假设您想要绝对值之和最小的那个。

np.abs(D).sum(axis=1).argmin()

这会产生最接近的第 5 行。

B[np.abs(D).sum(axis=1).argmin()] 产量:

array([    1,   537,   504,   547,   560,   552,   -24, -5092, 16092,
1, 1])

关于python - 两个数组之间的按行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55296099/

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