Найти - Пользователи
Полная версия: Преобразовать список в куб [1D]->[[[3D]]]
Начало » Python для новичков » Преобразовать список в куб [1D]->[[[3D]]]
1
Nick2009
Как оптимальнее преобразовать список-вектор в список-куб с равными размерностями или с заданными?
Либо как обращаться с 1D списком как с 3D? если возможно, без копирования

т.е.

->[[] [] []]

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

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

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

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

Как в таких случаях?
o7412369815963
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 )]
правда длинновато получается :)

>Как в таких случаях?
тут наверно надо вручную
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB