【发布时间】:2016-03-05 16:06:54
【问题描述】:
我想根据字典重新映射一个 numpy 数组。 让我们假设我有一个 N 行 3 列的 numpy 数组。现在我想根据它的索引重新映射值,这些索引写在字典中的元组中。 这工作正常:
import numpy as np
a = np.arange(6).reshape(2,3)
b = np.zeros(6).reshape(2,3)
print a
print A
dictt = { (0,0):(0,2), (0,1):(0,1), (0,2):(0,0), (1,0):(1,2), (1,1):(1,1), (1,2):(1,0) }
for key in dictt:
b[key] = a[dictt[key]]
print b
a = [[0 1 2]
[3 4 5]]
b = [[ 2. 1. 0.]
[ 5. 4. 3.]]
假设我有 N 行,其中 N 是偶数。现在我想将相同的映射(对上例中的那 2 行有效)应用于所有其他行。 因此我想有一个数组来自:
[[ 0 1 2]
[ 3 4 5]
[ 6 7 8]
[ 9 10 11]]
到:
b = [[ 2. 1. 0.]
[ 5. 4. 3.]]
[[ 8. 7. 6.]
[ 11. 10. 9.]]
有什么想法吗?我想快速完成,因为每个数组中有 192000 个条目应该重新映射。
【问题讨论】:
-
在 python2 或 python3 中?
-
那么您的字典中定义的顺序是任意的吗?还是您总是想镜像您的数据?因为在不使用字典的情况下会有更有效的方法......(numpy.fliplr)
-
感谢您的建议。它是 Python 2.7。不幸的是,顺序是随机的,没有镜像。
标签: numpy dictionary reshape remap