我有一个numpy阵列:
a = [[0 1 2 3 4]
[0 1 2 3 4]
[0 1 2 3 4]]
我有一个字典,其中包含要替换/映射的值:
^{pr2}$所以我的结论是:
a = [[(000, 001) (100, 101) (200, 201) (300, 301) (400, 401)]
[(000, 001) (100, 101) (200, 201) (300, 301) (400, 401)]
[(000, 001) (100, 101) (200, 201) (300, 301) (400, 401)]]
根据this SO answer,基于字典的值映射的一种方法是:
b = np.copy( a )
for k, v in d.items(): b[ a == k ] = v
当键和值属于同一数据类型时,此方法有效。但是在我的例子中,键是int
,而新值是tuple (of ints)
。因此,我得到一个cannot assign 2 input values
错误。在
我尝试了:
b = a.astype( ( np.int, 2 ) )
但是,我得到了ValueError: could not broadcast input array from shape (3,5) into shape (3,5,2)
的合理误差。在
那么,如何将int映射到numpy数组中的元组呢?在
这个怎么样?在
印刷品:
^{pr2}$或者,可以考虑使用整数数组:
印刷品:
您可以使用结构化数组(这类似于使用元组,但不会失去速度优势):
for
-循环可以用更快的操作来代替。但是,如果您的a
与总大小相比包含的值很少,这应该足够快了。在相关问题 更多 >
编程相关推荐