python - 如何在下面将这个 for 循环矢量化,我需要将值设置为需要舍入的范围?
问题描述
我有一个带有一些值的 np.array q 例如: [1,3,5,7] 。
还有一个 np.array z。有一些我需要四舍五入的值,然后它们被用作
第三个数组“映射”中的索引。
import numpy as np
q = [1,3,5,7]
z = [0,50.3,240.4,252.9,256]
mapping = np.zeros(256)
for i in range(len(q)):
print(i)
start, end = int(round(z[i])), int(round(z[i + 1]))
mapping[start:end] = int(round(q[i]))
print(mapping)
解决方案
这是我的方法:
repeats = np.diff(list(np.round(z))+ [256]).astype(int)
# repeats = array([ 49, 191, 12, 3])
np.repeat(np.round(q), repeats)
输出:
array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 7, 7, 7])
注意:这只有 255 个元素,并且与您的预期输出不同,因为,我不太了解您的逻辑。
推荐阅读
- php - 通过键数组更新 PHP 中的值
- rxjs - 使用带有合并映射和管道的 Forkjoin 的 api 请求的返回结果
- javascript - 等到翻译完成 - Ngx 翻译
- python-3.x - NameError:名称“XXX”未定义
- javascript - CSS - 将 div 的 n 个子元素分成 5 列的行
- c - C中两个数字数组(指针)的运算符重载
- reporting-services - 多列 SSRS 上的交互式排序
- c# - 如何仅替换不在c#中的两个引号之间的字符串
- javascript - 如何在 pug 模板中获取 koa 路线的名称?
- javascript - 从节点 js 服务器获取 Ajax 的结果