如何使用NumPy字符串格式化程序打印输出字符串依赖于数组值的NumPy数组?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用NumPy字符串格式化程序打印输出字符串依赖于数组值的NumPy数组?相关的知识,希望对你有一定的参考价值。

我想根据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')

以上是关于如何使用NumPy字符串格式化程序打印输出字符串依赖于数组值的NumPy数组?的主要内容,如果未能解决你的问题,请参考以下文章

java字符串打印

python中的格式化输出

java如何打印出任意给定的空格

Python格式化输出

[转]Python格式化输出

numpy flatten - 如何打印输出