Массивы Python np.nansum(), но не возвращают 0 при суммировании двух nansPython

Программы на Python
Anonymous
Массивы Python np.nansum(), но не возвращают 0 при суммировании двух nans

Сообщение Anonymous »


Контекст: У меня есть трехмерный массив (3,10,10): arr. У меня есть список, собирающий индексы 0-го измерения arr: grouped_indices. Я хочу вычислить сумму этих сгруппированных индексов arr и сохранить их в массиве хостов: host_arr.

Проблема: я использую np.nansum(), однако сумма двух NaN дает мне 0, и я бы хотел, чтобы она возвращала NaN. Я не хочу присваивать все нули значениям NaN после того, как вычислю сумму.

Вопрос: Как я могу вычислить нансумму n двумерных массивов (одной и той же формы), но установить в качестве NaN любую ячейку, для которой все массивы имеют NaN?< /п> Пример:
импортировать numpy как np импортировать matplotlib.pyplot как plt # Генерируем пример данных np.random.seed(0) arr_shape = (10, 10) число_массивов = 3 # Создайте трехмерный массив со случайными значениями arr = np.random.rand(num_arrays, *arr_shape) # Введение NaN arr[0, :5, :5] = np.nan arr[1, 2:7, 2:7] = np.nan arr[2] = np.nan обр[2, :2, :2] = 10 # Генерируем список массивов, содержащих индексы 0-го измерения arr grouped_indices = [np.array([0,1]), np.array([0,1,2])] # Создайте массив хостов, который представляет собой сумму срезов grouped_indices host_arr = np.array([np.nansum(arr[indices], axis=0) для индексов в grouped_indices]) # Постройте график нансумм plt.figure() plt.imshow(host_arr[0]) # индексы [2:5, 2:5] должны быть NaN plt.colorbar() plt.figure() plt.imshow(host_arr[1]) # индексы [2:5, 2:5] тоже должны быть NaN plt.colorbar()

Вернуться в «Python»