python - 如何在由 1D NumPy 数组(Python)中的值表示的索引处获取值为 1 的 2D NumPy 数组
问题描述
如何在 Python 中 1D np.array 中的值表示的索引处获取值为 1 的 2D np.array。
例子:
[1, 2, 5, 1, 2]
应转换为
[[0, 1, 0, 0, 0, 0],
[0, 0, 1, 0, 0, 0],
[0, 0, 0, 0, 0, 1],
[0, 1, 0, 0, 0, 0],
[0, 0, 1, 0, 0, 0]]
在这里,您已经预先知道了新数组的宽度 (shape[2]) 值。
我可以手动完成,但有没有办法直接使用 NumPy 方法来加快执行速度?我的数组的维度非常大,我必须对所有迭代都这样做。因此,为每次迭代手动执行此操作对计算的要求非常高。
解决方案
您可以使用np.zeros
. 数组的形状应该是(len(1D array), max(1D array)+1)
。然后使用 NumPy 的索引。
idx = [1, 2, 5, 1, 2]
shape = (len(idx), max(idx)+1)
out = np.zeros(shape)
out[np.arange(len(idx)), idx] = 1
print(out)
[[0. 1. 0. 0. 0. 0.]
[0. 0. 1. 0. 0. 0.]
[0. 0. 0. 0. 0. 1.]
[0. 1. 0. 0. 0. 0.]
[0. 0. 1. 0. 0. 0.]]
推荐阅读
- javascript - 按属性合并对象,在节点中累积另一个属性
- database - 在 MS Chatbot 中使用 .db 文件
- python-2.7 - python .replace 无法正常工作
- stripe-payments - Stripe Mettered Billing 我应该使用什么?
- javascript - 烧瓶中的按钮按下
- marklogic - MarkLogic 使用什么引擎根据 XML Schema 版本 1.1 验证 XML 文档?
- javascript - React ES6 组件模态 API
- python - 无法将项目上传到 pypi
- r - r 相关图中的对角线替换
- php - 如何注册用户