【发布时间】:2019-11-29 16:13:40
【问题描述】:
我有一本如下格式的字典:
{1: 7, 2: 1, 4: 2, 5: 1, ...}
字典可能非常大,所以我决定使用numpy 库来更有效地处理向量。
现在我需要将上述字典中的 值 插入到 key 索引处的 numpy 向量(一维数组)中。于是天真地尝试了以下方法:
import numpy as np
d = {1: 7, 2: 1, 4: 2, 5: 1}
T = np.zeros(shape=(n), dtype=np.int16)
for k, v in d.items():
N = np.insert(T, k, v)
print(N)
但是insert 方法总是返回new 数组,并在我的示例中覆盖N。那么改变数组元素的正确方法是什么,就像我在 C 中所做的那样,例如T[0] = 1.
看起来numpy 不允许这样做?
谢谢。
更新 正如 Divakar 所建议的,解决方案是一次分配多个值:
T[list(d.keys())] = list(d.values())
而且这不需要循环。
【问题讨论】:
-
n参数是什么? -
T[list(d.keys())] = list(d.values())? -
@Divakar,非常感谢。这确实是一个非常优雅的解决方案,哪里说
numpy数组对象可以带一个列表作为参数? -
不知道你是怎么被带到
numpy array object taking a list as parameter的。这是一个简单的基于整数的索引 - docs.scipy.org/doc/numpy/reference/… -
@Divakar,我是 Python 新手。在您的评论中,您执行了
list(d.keys()),它从字典中返回一个键列表,然后将其作为索引提交给T对象。
标签: arrays python-3.x numpy dictionary