У меня есть 3 Numpy массивов:Многошаговых операции линейной алгебры на нескольких Numpy массивов
import numpy
arr_a = numpy.random.random((300, 300))
arr_b = numpy.random.random((300, 300))
arr_c = numpy.random.random((300, 300))
Я хочу создать 4-й массив (arr_d) от комбинации из 3-х массивов. Эти правила заключаются в следующем:
, если arr_a значение ячейки сетки> 0,2 и значение arr_b < 0,4 и arr_c> 0,6 затем заполнить arr_d с 1
, если arr_a значение ячейки сетки> 0,3 и значение arr_b < 0,5 и arr_c> 0.6 затем заполнить arr_d с 2
, если arr_a значение ячейки сетки> 0,1 и значение arr_b < 0,2 и arr_c> 0,5 затем заполнить arr_d с 3
Во всех остальных случаях заполнения arr_d с 4
Я могу сделать это с помощью вложенных циклов, но это очень медленно и не очень pythonic. Кроме того, это тестовый пример, реальные массивы имеют размер 1000 * 1000, поэтому я хочу, чтобы масштабируемое решение было желательно parallizable.
Вы не должны использовать 'numpy.where' и просто использовать' result [condition_3] = 3' и т. Д. Это ускорит работу программы. Кроме того, вы используете 'np' вместо' numpy' в одном случае. –
Спасибо, действительно, для меня это 0.71 сек с 'numpy.where' и 0.57 без –