#python #arrays #numpy
Вопрос:
В моем коде я должен перейти из большого вложенного списка (список python списков python), и в каждом подсписке некоторые записи могут иметь значения numpy NaN. Когда я создаю этот вложенный список, он выглядит примерно так:
import numpy as np
nested_list = [[np.nan, 19], ['a', np.nan]]
>>> print(nested_list)
[[nan, 19], ['a', nan]]
Я ожидаю, что, когда я оцениваю равенство NaN-элемента подсписка по отношению к самому себе, я должен получить False
из-за того, что это нулевое значение, которое я делаю:
>>>print(nested_list[1][1] == nested_list[1][1])
False
Теперь я хочу превратить этот вложенный список в массив 2d numpy, но когда я это делаю, значения NaN просто превращаются в строки и не сохраняют свое значение null:
arr = np.array(list_of_lists)
>>>print(arr)
[['nan' '19']
['a' 'nan']]
>>>print(arr[1][1] == arr[1][1])
True
Как мне уберечь Нэн от превращения в веревочку?
Комментарии:
1. Зачем вам нужен массив numpy? Почему бы не придерживаться списка, где сочетание типов естественно.
2. @hpaulj У меня был какой-то предыдущий код, написанный, когда объект, с которым я имею дело, с самого начала представлял собой массив numpy, но код, который я пишу сейчас, требует, чтобы я начинал со списка, поэтому я хотел вернуться к тому, с чем код уже знал, как работать.
3. Просто имейте в виду, что массив типов объектов dtype сильно отличается от обычного числового массива.
Ответ №1:
Ты можешь сделать это вот так
import numpy as np
nested_list = [[np.nan, 19], ['a', np.nan]]
np.array(nested_list, dtype='object')