2016-07-05 2 views
1

Я пытаюсь создать массив, который с размерами:Создание 3D-массив из существующего 2D массива в Python

a(Days,Hours,Station) 

У меня есть почасовые данные для массива «а» для 2-х станций в течение 61 дней, так что в настоящее время у меня есть этот массив с этими размерами:

a(1464,2) 

Где 1464 это число часовых точек данных на станцию, что у меня есть (24 часа * 61 дней). Однако я хочу, чтобы разбить его еще дальше и добавить еще один аспект, который имеет дни, так что размеры бы тогда:

a(61 days,24 hours/day, 2 stations) 

Любые идеи о том, как я бы правильно быть в состоянии принять массив «а», что я в настоящее время есть и изменить его на эти 3 измерения?

+0

a a numpy array или standard array? – Arnial

+0

a - массив numpy. – HM14

ответ

1

Это разделит массив a на куски максимальной длины size.

def chunks(a, size): 
    arr = iter(a) 
    for v in arr: 
     tmp = [ v ] 
     for i,v in zip(range(size - 1), arr): 
      tmp.append(v) 

     yield tmp 

splitted = list(chunks(a, 24)) 
+0

О, хорошо интересно. Полагаю, я мог бы это сделать. Я также читал о np.rearrage (a, (61,2,2)), поэтому я пробовал это, но я точно не знаю, что функция делает за кулисами. Вы знакомы с этим? Будет ли это также легким решением? – HM14

+0

Также это не совсем работает. Разделенный имеет размеры (1,2,1464) вместо (61,24,2), как я хочу. – HM14

+0

Невозможно найти информацию о np.rearrage. Не знаю, что это значит. – Arnial

1

Вы можете попытаться создать массив 61x24x2. Это должно работать:

b = [] 
for i in xrange(61): 
    b.append(a[i*61:(i+1)*61]) 
0

Если вы первое поле часов * дни, преобразование было бы просто: а (х, у) => а (х // 24, х% 24, y)

x // 24 - это разделение полов, поэтому 1500 // 24 = 62, дни. Вы не указали, но я предполагаю, что поле «Часы» будет оставшимися часами; так что x % 24 получает оставшиеся часы, а 1500 % 25 = 12 - количество часов. Наконец, поле станции остается неизменным.

Я не думаю, что вы можете изменить структуру списка/массива в Python, так что вам нужно будет создать новый. Я также не уверен, действительно ли вы используете встроенный список или массив . Я не слишком хорошо знаком с массивом , так что это не полный ответ, но я надеюсь, что он указывает вам в правильном направлении арифметически.

Смежные вопросы