У меня есть два массива в моем коде. Один из них представляет собой сетку, заполненную нулями, а другой представляет собой массив символов с позициями, в которых они должны быть размещены в сетке. Я включил изображение с массивом позиций вверху и сеткой внизу.
Я пытаюсь заполнить сетку с учетом позиций символов. Например, я бы написал это
grid[0][0] = pos[0][0]
Чтобы поместить символ * в левом верхнем углу. Однако это дает мне ошибку значения
ValueError: could not convert string to float: '*'
Я предполагаю, что это связано с тем, что элемент сетки представляет собой целое число с плавающей запятой, а элементы позиции представляют собой строку. Есть ли способ обойти это?
Моя вина, это питон, я обновил тег и заголовок вопроса.
Пожалуйста, отредактируйте сообщение с текстом, а не с изображениями, и покажите минимально воспроизводимый пример, демонстрирующий ошибку.
Это похоже на массив numpy. Все элементы должны быть одного типа.
Итак, вам нужно изменить dtype grid
на символ.
Возможно, есть лучший способ, я попробовал это:
import numpy as np
l =[['*',0,2],['C',1,0]]
arr = np.array(l, dtype=object)
alist = [(ord(i[0]), i[1], i[2]) for i in arr]
arr_f = np.array(alist, dtype=float).reshape((1,6))
print(arr_f)
slist = [(chr(int(i[0])), int(i[1]), int(i[2]), chr(int(i[3])), int(i[4]), int(i[5])) for i in arr_f]
print(np.array(slist, dtype=object).reshape((2,3)))
Выход:
[[42. 0. 2. 67. 1. 0.]]
[['*' 0 2]
['C' 1 0]]
Вам нужно будет указать, какой язык вы используете! В некоторых языках иметь смешанные типы в массиве тривиально, в других это принципиально невозможно.