Похоже, кто-то другой избил меня до ответа, но вот еще один способ сделать это. Я использовал словарь, чтобы собрать все массивы и вернуть его из функции.
import numpy as np
b = np.array([0, 1, 2, 3, 4, 5, 6, 7])
b = np.reshape(b, (2, 2, 2))
print(b, type(b))
# [[[0 1],
# [2 3]],
# [[4 5],
# [6 7]]] <class 'numpy.ndarray'>
def myfunc(arr):
for i in range(b.shape[0]):
for j in range(b.shape[1]):
for k in range(b.shape[2]):
# Create a new array name from string parts.
name = "arr"+str(i)+str(j)+str(k)
print(name, b[i, j, k])
# Example: 'arr000', 0.
# Add a new key-value pair to the dictionary.
mydict.update({name: b[i,j,k]})
return(mydict)
mydict = {}
result = myfunc(b)
print(result)
# {'arr000': 0, 'arr001': 1, 'arr010': 2, 'arr011': 3, 'arr100': 4,
# 'arr101': 5, 'arr110': 6, 'arr111': 7}
# You would need to unpack the dictionary to use the arrays separately.
# use "mydict.keys()" to get all array names.
# "for key in keys" to loop through all array names.
# mydict['arr000'] will return the value 0.
Ваш вопрос помечен как "numpy", но не использует его в вашем фрагменте кода. Если вы пытаетесь придерживаться numpy , существует еще один метод, называемый «массив структурированных данных». Это похоже на словарь в том, что «имя» и «значение» могут храниться в виде парных множеств в массиве. Это обеспечивает эффективное управление памятью и быстрые вычисления (оптимизация C). Это важно, если вы работаете с большими наборами данных.
Также при работе с numpy может быть способ использовать значения индекса в именах переменных.
Позже я подумаю над примерами для обоих и по возможности обновлю свой ответ.