【发布时间】:2021-10-10 16:25:37
【问题描述】:
我想出了以下方法来查找所有公共索引,其中值在两个相等长度的向量中存在。我喜欢它的可读性,但我需要它更快...
missingA = np.argwhere(np.isnan(vectorA)==True);
missingA = [missingA[ma][0] for ma in range(len(missingA))];
missingB = np.argwhere(np.isnan(vectorB)==True);
missingB = [missingB[mb][0] for mb in range(len(missingB))];
allmissidxs = set(missingA).union(set(missingB));
idxs = [idx for idx in range(len(vectorA)) if idx not in allmissidxs];
它绝对有效,但我需要在其上使用它的向量每个元素从 100 万到 300 万不等……并且可能需要运行多次。我使用“...如果 idx 不在 allmissidxs 中”而不是说“...如果 idx 在 allpresidxs 中”,因为缺失值肯定是要扫描的小得多的子集。另外,我敢肯定,考虑到 np.argwhere() 自然返回的结构,必须重新配置 missingA 和 missingB 也无济于事,但这真的是瓶颈吗?
任何帮助将不胜感激!谢谢
【问题讨论】:
标签: python performance numpy bigdata processing-efficiency