Присвоение строки списку - PullRequest
0 голосов
/ 16 марта 2020
import random
import numpy as np
LOC = np.zeros(96)
LOC[0] = 'H'
for t in range(0,96):
    if 32<t<40:
            LOC[t] = random.choice(['H','W','I'])

Здесь я хочу инициализировать LO C символом 'H' и имеет несколько проверочных условий. Но когда я пытаюсь назначить его, я получаю сообщение об ошибке could not convert string to float: 'H'. Как я могу назначить символ / строку в список LO C?

Ответы [ 2 ]

2 голосов
/ 16 марта 2020

NumPy на самом деле не предназначен для смешивания типов контента. Если вам нужен массив строк, пустые значения должны быть не нулевыми, а пустыми строками: '' Вы можете использовать random.choices(), чтобы получить случайные значения и назначить, но хитрость заключается в том, чтобы установить dtype для чего-то подходящего для строк: *

import random
import numpy as np

LOC = np.zeros(96, dtype='<U1')
LOC[0] = 'H'
LOC[32:40] = random.choices(['H','W','I'], k = 40 - 32)

Это будет массив пустых строк, за исключением тех случаев, когда вы назначили случайные значения. Обычные списки python, конечно же, работают со смешанными типами. Если вам не нужен NumPy, вы можете инициализировать массив с помощью:

LOC = [0] * 96

, а затем приступить к установке значений с тем, что вы хотите.

0 голосов
/ 16 марта 2020

В python вы можете использовать функцию ord, чтобы получить кодовую точку Unicode символа. Поэтому, используя

            LOC[t] = ord(random.choice(['H','W','I']))

, вы сможете достичь своей цели, хотя я бы назвал это «назначением символа в массив numpy», а не «назначением строки в список».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...