Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 22, 2009 17:14:55

Nick2009
От:
Зарегистрирован: 2009-06-24
Сообщения: 161
Репутация: +  0  -
Профиль   Отправить e-mail  

Преобразовать список в куб [1D]->[[[3D]]]

Как оптимальнее преобразовать список-вектор в список-куб с равными размерностями или с заданными?
Либо как обращаться с 1D списком как с 3D? если возможно, без копирования

т.е.

->[[] [] []]

Пока придумал только вложенный цикл, но мне это не нравится



Офлайн

#2 Сен. 22, 2009 17:30:55

pasaranax
От:
Зарегистрирован: 2009-06-13
Сообщения: 574
Репутация: +  0  -
Профиль   Отправить e-mail  

Преобразовать список в куб [1D]->[[[3D]]]

Это у тебя не куб, размерность твоей матрицы (3,3,1). Сделать ее можно вот так:

from Numeric import array

arr = array(range(1, 10))
arr.shape = (3, 3, 1)
print arr
как сделать куб - сам догадаешься :)
посмотри в книжке Романа Сузи раздел про численные методы (он маленький) и/или документацию к модулю Numeric



Отредактировано (Сен. 22, 2009 17:33:09)

Офлайн

#3 Сен. 24, 2009 12:54:38

Nick2009
От:
Зарегистрирован: 2009-06-24
Сообщения: 161
Репутация: +  0  -
Профиль   Отправить e-mail  

Преобразовать список в куб [1D]->[[[3D]]]

pasaranax
Это у тебя не куб, размерность твоей матрицы (3,3,1). Сделать ее можно вот так:
from Numeric import array

arr = array(range(1, 10))
arr.shape = (3, 3, 1)
print arr
как сделать куб - сам догадаешься :)
посмотри в книжке Романа Сузи раздел про численные методы (он маленький) и/или документацию к модулю Numeric
Спасибо! Оказалось просто. Пока изучаю…

А если в каждой размерности разное количество элементов?
Например список списков разной длины
-> [,,]
-> [[,],]
-> [,[,]]

Как в таких случаях?



Офлайн

#4 Сен. 24, 2009 22:15:38

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Преобразовать список в куб [1D]->[[[3D]]]

Nick2009
->[[] [] []]
если штатными методами (у меня нет “нумерик” в комплекте), то можно так:
from itertools import groupby
arr = range(1,10)
print [[[x[1]] for x in g] for k,g in groupby( [[a,b] for a,b in enumerate( arr )], lambda x:x[0]/3 )]
правда длинновато получается :)

>Как в таких случаях?
тут наверно надо вручную

Отредактировано (Сен. 24, 2009 22:24:17)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version