У меня есть массив, заполненный данными только в нижних треугольниках, остальное — np.nan. Я хочу выполнить некоторые операции над этой матрицей, точнее — с элементами данных, а не nans, потому что я ожидаю, что поведение, когда элементы nans пропускаются в векторизованной операции, будет намного быстрее.
Я иметь два тестовых массива:
Я создал массив масок Masked_arr_nans и замаскировал все nans. Но этот путь намного медленнее первых двух. Я не понимаю почему.
Основной вопрос - какой самый быстрый способ работать с массивами типа arr_nans, содержащими много нанов, возможно, есть более быстрый подход, чем те, о которых я упоминал.
Боковой вопрос: почему маскированный массив работает намного медленнее?
У меня есть массив, заполненный данными только в нижних треугольниках, остальное — np.nan. Я хочу выполнить некоторые операции над этой матрицей, точнее — с элементами данных, а не nans, потому что я ожидаю, что поведение, когда элементы nans пропускаются в векторизованной операции, будет намного быстрее. Я иметь два тестовых массива: [code]arr = np.array([ [1.111, 2.222, 3.333, 4.444, 5.555], [6.666, 7.777, 8.888, 9.999, 10.10], [11.11, 12.12, 13.13, 14.14, 15.15], [16.16, 17.17, 18.18, 19.19, 20.20], [21.21, 22.22, 23.23, 24.24, 25.25] ])
print(test) # 0.0017232997342944145s print(test_nans) # 0.0017070993781089783s print(test_masked_nans) # 0.052730199880898s [/code] Я создал массив масок Masked_arr_nans и замаскировал все nans. Но этот путь намного медленнее первых двух. Я не понимаю почему. Основной вопрос - какой самый быстрый способ работать с массивами типа arr_nans, содержащими много нанов, возможно, есть более быстрый подход, чем те, о которых я упоминал. Боковой вопрос: почему маскированный массив работает намного медленнее?