python - 如何使用 NumPy 字符串格式化程序打印 NumPy 数组,其中输出字符串取决于数组值?

标签 python arrays numpy scipy formatting

我想根据 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.]]

最佳答案

array2string 的关键字参数 formatter需要要替换的数组元素的类型,而不是要转换为的类型。

因此,在您的示例中,您应该使用 float 而不是 str,因为 0.1.2. 是 float 。

如果你想确保数组的每个元素都用你的格式化程序打印出来,使用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 对您来说也是个好主意。

关于python - 如何使用 NumPy 字符串格式化程序打印 NumPy 数组,其中输出字符串取决于数组值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54054367/

相关文章:

python - 重试 <Response [404]> 直到我得到 <Response [200]>

java - 进行排列后,如何将它们添加到数组中? [ java ]

python - 如何从位于数组顶部的多边形内的 NumPy 二维数组中提取值?

python - Numpy 数组切片与 for 循环结果

python - 根据其他数组的条件按索引提取数组的最大元素

python - 为什么这会返回 False

python - 在 Pandas 中分组数据框?

python - Django 项目寻找 "attribute ' _session_cache'”

arrays - 如何在 Perl 中创建一个哈希数组并遍历它们?

php - 从多维数组中获取数据