我想根据NumPy数组中的值打印字符串,例如价值0
应该导致信'a'
。
import numpy as np
arr = np.zeros((2,2))
arr[(0,0)] = 1
arr[(0,1)] = 2
printValues = {0:'a', 1:'b', 2:'c'}
print(np.array2string(arr, formatter={'str':lambda x: printValues[x]}))
预期结果:
[['b' 'c']
['a' 'a']]
观测到的:
[[1. 2.]
[0. 0.]]
formatter
的关键字参数array2string
需要您要替换的数组元素的类型,而不是您要转换的类型。
所以,在你的例子中,你应该使用str
而不是float
,因为0.
,1.
和2.
都是浮点数。
如果你想确保数组的每个元素都是用格式化程序打印的,请使用all
:
import numpy as np
arr = np.zeros((2, 2))
arr[(0, 0)] = 1
arr[(0, 1)] = 2
printValues = {0: 'a', 1: 'b', 2: 'c'}
print(np.array2string(arr, formatter={'all': lambda x: printValues[int(x)]}))
有关更多可用类型,请参阅上面的链接文档。也许float_kind
对你来说也是一个好主意。
IIUC vectorize
np.vectorize(printValues.get)(arr)
array([['b', 'c'],
['a', 'a']], dtype='<U1')