【发布时间】:2020-12-21 13:11:42
【问题描述】:
我有一个维度为 8500 x 5 的二维数组 PointAndTangent。数据是逐行的,有 8500 个数据行和每行 5 个数据值。满足此条件时,我需要提取第 4 列元素的行索引,对于任何s:
abs(PointAndTangent[:,3] - s) <= 0.005
我只需要上述条件的第一个匹配项的行索引。我尝试使用以下内容:
index = np.all([[abs(s - PointAndTangent[:, 3])<= 0.005], [abs(s - PointAndTangent[:, 3]) <= 0.005]], axis=0)
i = int(np.where(np.squeeze(index))[0])
这是行不通的。我收到以下错误:
i = int(np.where(np.squeeze(index))[0])
TypeError: only size-1 arrays can be converted to Python scalars
我对 Python 中的 NumPy 不是很精通。任何建议都会很棒。我试图避免使用for 循环,因为这是我正在尝试的大型模拟的一小部分。
谢谢!
可能的解决方案 我使用了以下
idx = (np.abs(PointAndTangent[:,3] - s)).argmin()
它似乎工作。它返回第 4 列中与 s 最接近的值的行索引。
【问题讨论】:
-
你想要
np.argwhere(abs(PointAndTangent[:, 4] - s) <= 0.005)吗? -
我认为这行不通。对于任何
s,我都得到 0。 -
@ShubhamSubhnil。那是因为第一行匹配
-
我不太确定是什么绊倒了你,但希望我的回答能有所帮助
标签: arrays numpy numpy-ndarray