Измените строковые значения в numpy.array в определенных индексах - PullRequest
0 голосов
/ 12 октября 2018

Мне нужно создать массив строк, на самом деле это значение цвета, для каждого значения в другом массиве.Логика заключается в том, что для положительных значений должен быть один цвет, а для отрицательных - другой цвет.

Я пробовал этот фрагмент кода:

values = np.array([1, 2, -3, 4, 5])
color_values = np.array(['rgb(74,159,234)'] * len(values))
color_values[values < 0] = 'rgb(120,183,239)'
print(color_values)

Но проблема в том, что новые строковые значения усекаютсяна длину предыдущего значения в массиве, поэтому результат:

['rgb(74,159,234)', 'rgb(74,159,234)', 'rgb(120,183,239', 'rgb(74,159,234)', 'rgb(74,159,234)']

Третье значение изменено, но без последнего паретеза.Я могу переписать код для достижения необходимого результата, но теперь мне интересно, почему это происходит.

Я использую Python 3.6, numpy 1.14.2

1 Ответ

0 голосов
/ 12 октября 2018

Согласно этому ответу , массивы str numpy имеют фиксированную длину.Они предлагают указать тип данных при объявлении массива.

Вы можете попытаться добавить тип данных при объявлении массива;установите его в 16 символов (или больше).

color_values = np.array(['rgb(74,159,234)'] * len(values), dtype='S16')

Остальные строки не нуждаются в модификации.

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