Как преобразовать массив в новый через цикл for со следующими значениями
В отмеченном ответе цикла for не увидел.
Вообще такое решается рекурсией:
def mark(data):
if isinstance(data, (int, np.int32)):
if data < 20:return 'small'
elif data <= 30:return 'medium'
else:return 'large'
elif isinstance(data, (list, np.ndarray)):
return [mark(item) for item in data] # а вот и цикл for
a_random = np.random.randint(15, 37, (2, 3, 4))
print(a_random)
print(mark(a_random))
# [[[28 30 35 35]
# [16 31 35 34]
# [22 16 29 27]]
#
# [[23 35 24 19]
# [26 21 22 28]
# [30 25 36 15]]]
# [[['medium', 'medium', 'large', 'large'], ['small', 'large', 'large', 'large'], ['medium', 'small', 'medium', 'medium']], [['medium', 'large', 'medium', 'small'], ['medium', 'medium', 'medium', 'medium'], ['medium', 'medium', 'large', 'small']]]