【发布时间】:2020-01-04 02:25:33
【问题描述】:
假设我有一个像这样的 numpy 矩阵:
matrix = np.zeros((5,5))
# goes through code that changes value of matrix to get:
[[0. 4. 7. 1. 3.]
[5. 6. 8. 0. 1.]
[inf inf 5. 2. 5.]
[4. 6. 2. 1. inf]]
打印此矩阵时,我想在某些元素的任一侧添加 2 个星号:
[[0. *4* 7. 1. 3.]
[5. 6. *8* 0. 1.]
[inf inf 5. 2. 5.]
[4. *6* 2. *1* inf]]
我该怎么做呢?
我试过了:
matrix_output = matrix
matrix_output[i][j] = '*' + str(matrix_for_print[i][j]) + '*'
但我收到此错误:
builtins.ValueError: could not convert string to float: '*4.0*'
(另外,附注,我如何让矩阵只有逗号而不是像这里的小数。所以理想情况下,我想:
[[0, *4*, 7, 1, 3]
[5, 6, *8*, 0, 1]
[inf, inf, 5, 2, 5]
[4, *6*, 2, *1*, inf]]
【问题讨论】:
-
听起来您在混淆数据和演示文稿。如果您希望在向用户显示输出时在输出中包含星号,则应该在输出格式代码中执行此操作,而不是尝试在数组本身中粘贴一堆星号。数组表示数值数据。
-
@user2357112 是的,这就是我想要做的,这意味着用'*'打印矩阵。我只是不确定如何打印它。
-
matrix现在是ndarray和floatdtype。inf是一个浮点数。alist = matrix.tolist(),创建一个嵌套列表。然后,您可以将元素从数字更改为字符串"*8*"。列表显示还包括逗号(numpy 数组通常会省略这些)。
标签: python list numpy matrix character