Python: абсолютное значение каждого элемента матрицы внутри цикла

В python (я новичок в работе с python) у меня есть матрица, построенная внутри цикла следующим образом:

A[:,index_i ,index_j] = B[:,index_i ,index_j] - C[:,index_i ,index_j]

Сразу после этого внутри того же цикла выполняются некоторые вычисления для A, но прежде, чем мне нужно будет получить A с каждым положительным элементом для этих операций, тогда запись этого будет работать, поэтому каждый A[k,index_i,index_j]>=0?

A[:,index_i ,index_j]= abs( B[:,index_i ,index_j] - C[:,index_i ,index_j] )

Если возможно, я хочу избежать большего количества циклов, чтобы каждый элемент был положительным.

Спасибо!


person FiSer    schedule 15.01.2021    source источник
comment
Добро пожаловать в StackOverflow! Найдите время, чтобы прочитать этот пост о том, как Как задать хороший вопрос?, а также о том, как предоставьте минимальный, полный и проверяемый пример и соответствующим образом измените свой вопрос   -  person yatu    schedule 15.01.2021


Ответы (2)


Предполагая, что это массивы numpy, приведенное ниже должно работать достаточно хорошо:

A[:, i,j] = np.abs(B[:, i, j]- C[:,i, j])

В самом деле, вы даже можете пропустить цикл i, j и просто направо:

A = np.abs(B-C)

чтобы получить тот же результат более питоническим и быстрым способом.

person supercooler8    schedule 15.01.2021

Встроенная функция abs принимает скалярное значение. Вы можете использовать функцию numpy

import numpy as np
result = np.abs(...)
person blue_note    schedule 15.01.2021