Эта задача должна быть помечена, а не Numpy, поскольку Pandas не обслуживает 5-мерные массивы.
Для создания примера массива I использовал следующий код:
import itertools
s1 = ['A', 'B', 'C']
s2 = ['AA', 'BB', 'CC', 'DD', 'EE', 'FF', 'GG', 'HH']
s3 = ['1', '2', '3', '4']
arr = np.array([ '_'.join(t) for t in itertools.product(s1, s2, s3) ])\
.reshape((len(s1), len(s2), len(s3)))
В настоящее время arr имеет только 3 измерения, поэтому, чтобы преобразовать его в 5-D массив, выполните:
arr = arr[:, :, np.newaxis, np.newaxis, :]
Когда вы print(arr.shape)
, результат будет: (3, 8, 1, 1, 4)
(4 дня вместо 365).
Затем, чтобы напечатать ваш срез, выполните:
arr[1,2]
Результат:
array(['B_CC_1', 'B_CC_2', 'B_CC_3', 'B_CC_4'], dtype='<U6')
т.е.:
- 1 (первый индекс) - ограничить первое измерение вторым значением ( B ) ,
- 2 (второй индекс) - ограничить второе измерение третьим значением (CC).
А чтобы заменить их значениями A / BB , запустите:
arr[1,2,...] = arr[0,1,...]