【发布时间】:2015-11-21 11:07:04
【问题描述】:
我有一个二维 numpy 数组和一个字典,它将数组第一列中的值映射到其他值。例如:
>>> x = np.array([[14, 4], [18, 2], [15, 7]])
>>> d = {5: 0, 7: 2, 14: 3, 15: 12, 16: 10, 18: 30}
d 中的所有键都不能保证在x 中,尽管x 第一列中的所有值都将在d 中。我想要做的是将x 第一列中的值替换为d 中的相关值。比如:
>>> x[:, 0] = d[x[:, 0]]
所以新数组是:
>>> x
array([[3, 4], [30, 2], [12, 7]])
当然,这不起作用,因为我基本上只是将整个数组传递到需要一个键的字典中。我想出的最好的方法是使用for 循环:
>>> for i in range(x.shape[0]):
... x[i, 1] = d[x[i, 1]]
这当然是非常非 numpy 并且可能没有那么高效。我的问题是,有没有一种“麻木的方式”来做这样的事情?
【问题讨论】:
-
那么最终输出必须是什么?
-
@Divakar - 为您添加了示例输出。
-
x第一列中的所有值都保证在d的键中吗? -
@Divakar - 是的,如果它在
x的第一列中,就会有一个密钥。
标签: python arrays numpy dictionary