ValueError:无法将字符串转换为浮点数:'x'

时间:2019-09-18 13:06:08

标签: python arrays python-3.x numpy

我有两个矩阵imageconvolved。卷积中的某些元素必须替换为字符串“ x”。对应于“ x”值的索引是出现在图像矩阵中的那些索引。 这是我的矩阵,

import numpy as np

image = np.array([[0, 1, 0, 1, 0], [0, 0, 0, 1, 1],[0, 0, 0, 0, 0]])

convolved = np.array([[1., 1., 3., 3., 3.],[1., 1., 3., 3., 3.],[0., 0., 1., 2., 2.]])

这是我写的,

for m, i in enumerate(image):
    for n, j in enumerate(i):
        if j == 1:
            #print(n,j)
            convolved[m][n] = "x"
print(convolved)

运行此命令时,出现以下错误,

ValueError: could not convert string to float: 'x'

我想要这个输出;

array([[1., 'x', 3., 'x', 3.],
       [1., 1., 3., 'x', 'x'],
       [0., 0., 1., 2., 2.]])

有人可以告诉我我做错了什么吗? 谢谢。

2 个答案:

答案 0 :(得分:2)

您正试图给np.array一个char值。您正在混合数据类型。这将不起作用,因为np.array需要类型为number的数据。 https://docs.scipy.org/doc/numpy/reference/generated/numpy.array.html

要么使用唯一数字而不是“ x”(例如-1),要么将整个数组更改为chars(例如numpy.chararray)。 https://docs.scipy.org/doc/numpy/reference/generated/numpy.chararray.html

答案 1 :(得分:1)

您可以尝试使用pandas

import pandas as pd

image = pd.DataFrame([[0, 1, 0, 1, 0], [0, 0, 0, 1, 1],[0, 0, 0, 0, 0]])

convolved = pd.DataFrame([[1., 1., 3., 3., 3.],[1., 1., 3., 3., 3.],[0., 0., 1., 2., 2.]])

for i in image:
    for j in image[i]:
        if image[i][j] == 1:
            convolved[i][j] = "x"
print(convolved)