ndarray значение визуализации и перезаписи в pandas - PullRequest
0 голосов
/ 24 марта 2020

У меня есть ndarray формы (3,8,1,1,365), где 3 - количество (A, B, C) продукта, 8 - количество мест (AA, BB, CC, DD, EE , FF, GG, HH), 365 - временной интервал данных в днях. Я хочу видеть значения для комбинации B и CC в течение 365 дней, хочу заменить эти значения комбинации A и BB. Как это сделать ? пожалуйста, помогите .. попытался с ndarray_name.todense () [2] [3] для визуализации данных, но не повезло ..

1 Ответ

0 голосов
/ 24 марта 2020

Эта задача должна быть помечена, а не 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,...]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...