python - 有什么建议可以比当前方法更快地生成 newlist.append(q) 列表吗?

标签 python python-2.7 python-3.x numpy

您好,我正在尝试使用下面提到的代码生成元素 q 的列表。

newlist=[]
coords=pn['point.coords'][z>=0.001950]
points=range(27000)
for q in points:
    if pn['point.coords'][q] in coords: 
        newlist.append(q)

这里 pn['point.coords'] 是点的 x ,y ,z 坐标列表,我想在其中创建这些点的新列表其中z>= 0.001950x,y,z 的总限制为 0 到 0.002。代码运行缓慢。有没有更快的方法来获取这个新列表?

最佳答案

参见np.where 。 numpy 的方式是

coords = pn['point.coords']
z = coords[:,2]
q, = np.where(z>0.001950)
high_points=coords[q]

另一点是,这是一个线性时间程序。 你的是二次的,因为坐标中的 p 具有隐藏的复杂性。 如果 zmax 的值很小,执行时间将很快增加。

关于python - 有什么建议可以比当前方法更快地生成 newlist.append(q) 列表吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46813151/

相关文章:

python - 帮助我使我的 Python 2 代码在 Python 3 中工作

python - 使用带通配符的键创建 Python 字典

python - 需要帮助将子元素中的文本替换为 XML 中多个子元素中的文本

python - 在 Python 的命令行中允许覆盖配置选项的最佳方法是什么?

用于检索查询的 Google 命中数的 Python 脚本

Python:如何在 txt 文件中的控制台中写入错误?

python - 在 os.walk() 期间找到绝对路径的更好方法?

python-3.x - 如何在 python 中使用 while 循环来添加列表中的值,直到它们超过最大值?

python - AttributeError : can't set attribute. 分层注意网络

python - 从 Pandas 中的每个其他时间戳中减去每个组的最小时间戳