gpt4 book ai didi

python - 如何在标识空列表的 numpy bool 数组中创建空列表?

转载 作者:行者123 更新时间:2023-12-01 01:29:23 25 4
gpt4 key购买 nike

我正在尝试创建一个 bool 数组来标识数组中的空列表。我做了以下代码:

import numpy as np
from scipy.spatial import cKDTree

rand_points = np.random.rand(5,3)

other_points = np.zeros((5,3))
for i in range(3):
other_points[:,i] = rand_points[:,i] * 2

randTree = cKDTree(rand_points)
nearPoints = cKDTree.query_ball_point(randTree, other_points, 0.6)

nearPoints 可以产生以下输出:

array([list([]), list([]), list([2]), list([]), list([])], dtype=object)

我想生成一个 bool 数组,选择等于 list([ ]) 的元素作为 True。我尝试了多种方法,但都没有成功,例如:

nearPoints == None

如何正确创建 bool 数组?

最佳答案

如果您有带有 dtype=object 的数组,则没有太多性能可言,显然这确实是 cKDTree给你。因此,不妨创建带有列表理解的数组:

>>> np.array([len(lst)==0 for lst in nearPoints])
array([ True, True, True, False, True])

或者,如果您更喜欢 map 而不是列表理解(我不喜欢):

~np.fromiter(map(len, nearPoints), dtype=bool)

在更高的层面上,您可能无法对这样的列表数组进行向量化操作,因此您最终可能会迭代该数组。但你可以这样做

for lst in nearPoints:
if not lst:
# skip empty list cases
continue

关于python - 如何在标识空列表的 numpy bool 数组中创建空列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53035848/

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