#python #arrays #numpy #for-loop #if-statement
#python #массивы #numpy #for-цикл #if-оператор
Вопрос:
Я создал массив d:
d = [[[1.60269836 1.97347391 1.76414466 1.53102548 1.35352821]
[1.0153325 1.53331695 1.36105004 1.76111151 1.62595392]
[1.5156144 1.77076004 1.24249056 1.94406171 1.98917422]]
[[1.44790465 1.46990159 1.48156613 1.92963951 1.11459211]
[1.10674091 1.57711027 1.85275685 1.84640848 1.34216641]
[1.63670185 1.69894884 1.45114395 1.09750849 1.09564564]]]
Которые имеют максимальное, минимальное и среднее:
Max value of d is: 1.98917422158341
Min value of d is: 1.0153325043494292
The mean of d is: 1.5377490722289062
Также я создал пустой массив f:
f = np.empty((2,3,5))
f = [[[1.60269836 1.97347391 1.76414466 1.53102548 1.35352821]
[1.0153325 1.53331695 1.36105004 1.76111151 1.62595392]
[1.5156144 1.77076004 1.24249056 1.94406171 1.98917422]]
[[1.44790465 1.46990159 1.48156613 1.92963951 1.11459211]
[1.10674091 1.57711027 1.85275685 1.84640848 1.34216641]
[1.63670185 1.69894884 1.45114395 1.09750849 1.09564564]]]
При всем этом мне нужно проверять каждое значение в d и:
- Если это общее значение больше, чем d_min, но меньше, чем d_mean, присвоите 25 соответствующему значению в f .
- Если значение в d больше, чем d_mean, но меньше, чем d_max, присвоите 75 соответствующему значению в f .
- Если значение равно d_mean , присвоите 50 соответствующему значению в f .
- Присвоите 0 соответствующему значению (значениям) в f для d_min в d .
- Присвойте 100 соответствующему значению (значениям) в f для d_max в d .
В конце концов, f должно иметь только следующие значения: 0, 25, 50, 75 и 100.
До сих пор моим лучшим решением было:
for value in d:
if value.any() > d_min and value.any() < d_mean:
value = 25
value.append(f)
if value.any() > d_mean and value.any() < d_max:
value = 75
value.append(f)
if value.any() == d_mean:
value = 50
value.append(f)
if value.any() == d_min:
value = 0
value.append(f)
if value.any() == d_max:
value = 100
value.append(f)
Я не получаю никаких ошибок, но и не получаю нужного мне результата. Я только начинаю изучать python и numpy, поэтому я уверен, что найдется лучший способ сделать это, но после прочтения документации и поиска множества примеров я не получаю решения.
Комментарии:
1. Добавьте тег numpy для получения лучших ответов
Ответ №1:
Это то, что вы ищете?
for i, value_i in enumerate(d):
for j, value_j in enumerate(value_i):
for index, value in enumerate(value_j):
if value > d_min and value < d_mean:
value = 25
f[i][j][index] = value
if value > d_mean and value < d_max:
value = 75
f[i][j][index] = value
if value == d_mean:
value = 50
f[i][j][index] = value
if value == d_min:
value = 0
f[i][j][index] = value
if value == d_max:
value = 100
f[i][j][index] = value