У меня есть список кортежей в формате «текст, целое число», где текст имеет юникод и исходит из файла, открытого с кодировкой utf-8
.
Я пытаюсь преобразовать список в многомерный массив numpy с правильными типами.
Используя обычные np.array
или np.asarray
, преобразует все в Unicode или U1
tuples = [("A",1),("B",2)]
np.array(tuples)
>>> [['A' '1']
['B' '2']]
Указание типов, которые я хочу, дает мне пустую строку, а не многомерную:
np.array(tuples, dtype=np.dtype("U,int"))
>>> [('', 1) ('', 2)]
Если я не укажу количество символов в юникоде, чего я не могу сделать, потому что мой текст имеет переменную длину. Также это не многомерно.
np.array(tuples, dtype=np.dtype("<U99,int"))
>>> [('A', 1) ('B', 2)]
Как я могу преобразовать свой список кортежей в массив numpy с целочисленным и строковым форматом? Кроме того, в конечном итоге я буду делать np.where()
во втором столбце и проверять, больше ли значение, чем, например. 50, поэтому решение, которое работает со следующим шагом, было бы идеальным. Спасибо!
edit: в идеале результатом должен быть многомерный массив, чтобы при необходимости отдельные столбцы можно было выбирать самостоятельно.
np.where
для выбора нужных строк, если массив был многомерным. В противном случае это одномерный массив кортежей, и я не могу получить доступ к первому значению каждого кортежа, не сделав сначала копию, напримерarray[:,0]
- person Lobstw   schedule 18.06.2018