python - 向量化两个数字之间的查找
问题描述
我正在尝试找到一种使用 numpy 对以下 for 循环进行矢量化的方法。这个 for 循环让我的代码真的很拖沓。我遇到的问题是,我需要根据值 val 落在数组 row 范围内的索引来查找字典 d 中的值。
for i in range(len(row)-1):
if row[i]<val<=row[i+1]:
return d[i]*row[-1]
我想我可以使用 np.where 和 np.logical_and 来获取数组中的两个数字,但是我需要索引来从字典中获取值,这就是我似乎无法做到的部分弄清楚没有循环。
解决方案
感谢 Divakar 的评论,我认为正确的答案是用这个 numpy 怪物替换整个 for 循环:
np.vectorize(d1.get)((np.searchsorted(row[:-1],vals,side='left'))-1)*row[-1]
推荐阅读
- javascript - 为什么在下面这段 JavaScript 代码中形成了无限循环?
- php - PHP 警告:file_put_contents() 无法打开流:是目录
- ruby-on-rails - 如何使用 Firebase 社交身份验证和 Rails 后端处理用户创建
- arangodb - ArangoDB 集群在一个节点故障后停止
- reactjs - Backcolor material-ui 文本字段取决于值
- pytorch - 进入下一个epoch时准确率下降是正常的吗?
- bixby - 如何从两个不同的输入视图中获取两个输入?
- r - 如何在 r 中检测面板时间序列数据中的大跳跃和快速反转
- arrays - 从数组中推拉对象
- html - 使用 HTML 和 Javascript 将表格行从一个页面传输到另一个页面