Python中文
首页
教程
问答
标签
搜索
登录
注册
慢行比较与NumPy中的Forloops如何改进?
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我使用<code>python</code>和<code>numpy</code>来比较两个数组或相等形状的坐标(x,y,z),以便匹配它们,如下所示:</p> <pre><code>coordsCFS array([[ 0.02 , 0.02 , 0. ], [ 0.03 , 0.02 , 0. ], [ 0.02 , 0.025 , 0. ], ..., [ 0.02958333, 0.029375 , 0. ], [ 0.02958333, 0.0290625 , 0. ], [ 0.02958333, 0.0296875 , 0. ]]) </code></pre> <p>以及</p> ^{pr2}$ <p>使用h5py从两个hdf5文件读取数据。 为了进行比较,我使用<a href="http://docs.scipy.org/doc/numpy/reference/generated/numpy.allclose.html" rel="nofollow">allclose</a>,它测试“几乎相等”。坐标在python的常规浮点精度内不匹配。这就是我使用for循环的原因,否则它将使用<code>numpy.where</code>。我通常试图避免for循环,但在这种情况下,我不知道如何避免。所以我想出了一个非常慢的片段:</p> <pre><code>mapList = [] for cfsXYZ in coordsCFS: # print cfsXYZ indexMatch = 0 match = [] for asterXYZ in coordRMED: if numpy.allclose(asterXYZ,cfsXYZ): match.<a href="https://www.cnpython.com/list/append" class="inner-link">append</a>(indexMatch) # print "Found match at index " + str(indexMatch) # print asterXYZ indexMatch += 1 # check: must only find one match. if len(match) != 1: print "ERROR matching" print match print cfsXYZ return 1 # save to list mapList.append(match[0]) if len(mapList) != coordsRMED.shape[0]: print "ERROR: matching consistency check" print mapList return 1 </code></pre> <p>这对于我的测试样本大小(800行)来说非常慢。我打算比较大一点的。我可以删除一致性检查,并在内部for循环中使用<code>break</code>,以提高速度。还有更好的方法吗?在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>一种解决方案是对两个数组进行排序(添加一个索引列,以便排序后的数组仍然包含原始索引)。然后,为了匹配,在lock step中逐步遍历数组。由于您希望得到精确的1-1对应关系,所以您应该始终能够匹配出成对的行。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何在乒乓球比赛中预测球的轨迹,对于AI球拍预测?
4 回答
如何在乒乓球游戏中阻止球
1 回答
如何在乘法和模中不乘空间?
2 回答
如何在乘法和除以2个不同的数字之间进行交换?
9 回答
如何在也是数据一部分的单个字符上拆分大字符串
5 回答
如何在乾草堆中找到針,有更好的解決方案嗎?
5 回答
如何在事件wxWidgets中传递自定义数据
10 回答
如何在事件中使用lambda i=i?
5 回答
如何在事件中心只接收最近的数据
10 回答
如何在事件发生之前保持云函数运行?
5 回答
如何在事件发生后使页面重定向到同一页面
10 回答
如何在事件回调之间保持python生成器的状态
9 回答
如何在事件处理程序(pythonsocket、sphinx)中保留docstring
8 回答
如何在事件处理程序中更改wxRichTextCtrl的光标位置?
7 回答
如何在事件处理程序中访问外部对象?
7 回答
如何在事件循环中将协程打包为正常函数?
7 回答
如何在事件循环之外运行协同程序?
10 回答
如何在事件循环结束时为并发未来的所有线程调用类方法?
4 回答
如何在事件文件中只保留一份摘要?
9 回答
如何在事件模板中添加事件
8 回答