gpt4 book ai didi

python - 将两个 numpy.arrays 之间的比较仅应用于一列但检索整行

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

我有两个 numpy 数组,每个数组有两列。

import numpy as np


a = np.array([[1131, 1],
[4131, 2],
[421, 1],
[41, 1]])

b = np.array([[5881, 2],
[637, 2],
[742, 2],
[36, 2]])

我想创建一个包含 2 列的第三个数组,第一列将包含 a 和 b 的第一列之间的最小值,第二列将包含包含最小值的数组的第二列。

第三个数组应该是

c = np.array([[1131, 1],
[637, 2],
[421, 1],
[36, 2]])

我怎样才能有效地做到这一点?

最佳答案

看起来是滥用 的完美案例 NumPy broadcastingnp.where 内-

np.where((a[:,0] < b[:,0])[:,None],a,b)

美妙之处在于它可以独立于 ab 中的列数工作,因为这是广播的帮助。

sample 运行-

In [78]: a
Out[78]:
array([[1131, 99],
[4131, 4],
[ 421, 56],
[ 41, 78]])

In [79]: b
Out[79]:
array([[5881, 23],
[ 637, 42],
[ 742, 7882],
[ 36, 62]])

In [80]: np.where((a[:,0] < b[:,0])[:,None],a,b)
Out[80]:
array([[1131, 99],
[ 637, 42],
[ 421, 56],
[ 36, 62]])

关于python - 将两个 numpy.arrays 之间的比较仅应用于一列但检索整行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36772082/

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