2016-06-08 4 views
1

Я хочу, чтобы поместить строку в ячейку массива, но я получаю сообщение об ошибке:Как я могу поместить строку в массив

ValueError: could not convert string to float

Мой код выглядит следующим образом:

k = np.ceil(99/8) 

rs = np.zeros((int(k), 10)) 

for i in range(0, int(k)): 
    rs[i, 0] = "FREQ" 
    for j in range(1,9): 
     rs[i, j] = rs_imp[8*k+j, 0] 
+0

Возможно [этот пост] (http://stackoverflow.com/questions/6999617/how-to-assign-a-string-value-to-an-array-in-numpy) - это то, что вы на самом деле ищете выполнять. –

ответ

2

Вашего массив неявно массив с плавающей точкой, но вы можете изменить тип данных для object, чтобы иметь возможность включать как поплавки и строки:

rs = np.zeros((int(k), 10), dtype='object') 

Но это собирается ограбить вас потенциальные оптимизации и может вызвать непредвиденные проблемы позже.

Звучит как проблема XY. Почему, по-вашему, вам нужно добавить строку «FREQ» в этот массив? Что вы на самом деле пытаетесь сделать?

+0

Это проблема XY, которую я хочу разделить и создать файлы с определенным форматом, чтобы я мог использовать XY в качестве входа. Большое спасибо. Это сработало. –

+0

Как я могу написать этот массив теперь в TXT-файл? Когда я попытался сделать np.savetxt ('test.txt', RSF, разделитель =», ') я получил Рассогласования между массивом DTYPE (' объектом ') и спецификатором формата (' % .18e,% .18e,%. 18e,%. 18e,%. 18e,%. 18e,%. 18e,%. 18e,%. 18e ') –

+0

Поскольку массив больше не имеет типа 'float', коды форматирования по умолчанию (например '% e') недействительны. Вы можете сделать это: 'np.savetxt ('test.txt', rsf, delimiter = ',', fmt = '% s')' и он должен делать то, что вам нужно, но если бы вопрос был добавлен «FREQ» в качестве префикса для каждой строки файла, содержащего номера, есть более чистые способы достижения этого, чем для создания массива смешанного типа. Кстати, проблема XY определена [здесь] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). – Riaz

2

У вас есть массив поплавков. Вы хотите поместить строковое значение в элемент этого массива. Это невозможно.

Смежные вопросы