Как я могу реализовать цикл for в Python?

#python #numpy

Вопрос:

Я пытаюсь разработать цикл for, чтобы мне не приходилось выполнять команду для каждого значения в массиве B. Мне нужен вывод в одном массиве. Как я могу сделать это здесь, на Python, для приведенного ниже кода?

 C=[ 0, 0, 2, 1, 1, 8, 3, 6, 6, 7, 11,  8, 10, 23,22, 12, 15, 34, 16,  9, 11,  6,  0,  0]
B= np.array([500,  1000,  1500,  2000,  2500,  3000,  3500,  4000,  4500,5000,  5500,  6000,  6500,  7000,  7500,  8000,  8500,  9000,9500, 10000, 10500, 11000, 11500, 12000])
C=[ 0, 0, 2, 1, 1, 8, 3, 6, 6, 7, 11,  8, 10, 23,22, 12, 15, 34, 16,  9, 11,  6,  0,  0]
B= np.array([500,  1000,  1500,  2000,  2500,  3000,  3500,  4000,  4500,5000,  5500,  6000,  6500,  7000,  7500,  8000,  8500,  9000,9500, 10000, 10500, 11000, 11500, 12000])
EU=np.array(C)*np.array(B)
ENU_1 =np.where(B < 500, 0, (B-500)*C)
ENU_2 =np.where(B < 1000, 0, (B-1000)*C)
 

Комментарии:

1. При всем уважении, должно быть, уже существуют тысячи онлайн-ресурсов, в которых объясняются основы Python… См., например: вики. python.org/moin/ForLoop .

2. Спасибо, что ответили.

Ответ №1:

Создайте как B, так и C в виде массивов Numpy:

 C = np.array([ 0, 0, 2, 1, 1, 8, 3, 6, 6, 7, 11, 8, 10, 23, 22, 12, 15, 34, 16,
    9, 11, 6, 0, 0])
B = np.array([500, 1000, 1500, 2000, 2500, 3000, 3500, 4000, 4500, 5000, 5500,
    6000, 6500, 7000, 7500, 8000, 8500, 9000, 9500, 10000, 10500, 11000, 11500,
    12000])
 

Затем вычислите EU так же, как умножение обоих исходных массивов, без какого-либо цикла:

 EU = C * B
 

И остальная часть вашего кода (для вычисления ENU_1 и ENU_2) в порядке.

Но вы написали, что хотите получить вывод в одном массиве, и это неясно. Вы хотите объединить 3 массива, вычисленных до сих пор?

Если это так, запустите, например:

 result = np.concatenate((EU, ENU_1, ENU_2))
 

Обратите внимание на двойные скобки, потому что:

  • внешние скобки являются «контейнером» для параметров,
  • внутренние скобки (с тем, что внутри) создают кортеж — первый (и единственный) параметр этой функции — последовательность массивов для объединения.