Есть ли способ заменить элемент с плавающей запятой в массиве строковым элементом в Python?

У меня есть два массива в моем коде. Один из них представляет собой сетку, заполненную нулями, а другой представляет собой массив символов с позициями, в которых они должны быть размещены в сетке. Я включил изображение с массивом позиций вверху и сеткой внизу.

Я пытаюсь заполнить сетку с учетом позиций символов. Например, я бы написал это

grid[0][0] = pos[0][0]

Чтобы поместить символ * в левом верхнем углу. Однако это дает мне ошибку значения

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

Я предполагаю, что это связано с тем, что элемент сетки представляет собой целое число с плавающей запятой, а элементы позиции представляют собой строку. Есть ли способ обойти это?

Вам нужно будет указать, какой язык вы используете! В некоторых языках иметь смешанные типы в массиве тривиально, в других это принципиально невозможно.

jasonharper 03.08.2024 04:45

Моя вина, это питон, я обновил тег и заголовок вопроса.

Boltu 03.08.2024 05:20

Это похоже на массив numpy. Все элементы должны быть одного типа.

Barmar 03.08.2024 06:13

Итак, вам нужно изменить dtype grid на символ.

Barmar 03.08.2024 06:14
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
5
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Возможно, есть лучший способ, я попробовал это:

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]]

Другие вопросы по теме