python - 使用数组索引加速 numpy 数组广播
问题描述
我怎样才能加快这个for循环语句?是否可以为此目的使用快速 numpy索引方法?
np.random.seed(2021)
x = np.zeros((10, 3))
values = np.random.randn(10)
idxs = np.random.randint(0, 3, (10,))
for i, (idx, val) in enumerate(zip(idxs, values)):
x[i, idx.item()] = val
print(x)
[[ 0. 0. 1.48860905]
[ 0. 0. 0.67601087]
[-0.41845137 0. 0. ]
[ 0. -0.80652081 0. ]
[ 0.55587583 0. 0. ]
[ 0. 0. -0.70550429]
[ 0. 0. 1.13085826]
[ 0.64500184 0. 0. ]
[ 0. 0.10641374 0. ]
[ 0.42215483 0. 0. ]]
解决方案
推荐阅读
- java - 接口序列化
- java - 如何从 Jenkins 启动 java 服务
- python - 有没有办法让 gensim LDA 自动选择最佳主题数量
- javascript - 将应用程序部署到 Heroku 后无法获取 API 数据(在本地完美运行)
- reactjs - 如何使用 React JS 在 Redirect 上执行函数
- php - 为什么无法识别用于重新登录的 Laravel League/ouath2 令牌
- javascript - 对数组对象内的数组元素执行操作
- php - 将对象数组转换为 Vue js 和 php 中的对象
- javascript - 画布在 60Hz 显示器上闪烁,在 144Hz 显示器上工作正常
- ansible - Openstack train aio 安装问题