Найти - Пользователи
Полная версия: Из одномерного массива сделать двумерный
Начало » Python для новичков » Из одномерного массива сделать двумерный
1 2
kate
Привет всем, ребят подскажите, как из одномерного массива(размерность у него всегда разная), сделать двумерный? просто у меня так получается, что до определенного момента удобнее работать с одномерным массивом, а потом использовать двумерный. Я прогуглила, но так и не поняла, может быть алгоритм какой есть? буду очень благодарна за любую помощь:)
FishHook
kate
Привет всем, ребят подскажите, как из одномерного массива(размерность у него всегда разная), сделать двумерный? просто у меня так получается, что до определенного момента удобнее работать с одномерным массивом, а потом использовать двумерный. Я прогуглила, но так и не поняла, может быть алгоритм какой есть? буду очень благодарна за любую помощь:)
Предположим, есть список
l=[1,2,3,4,5,6,7,8,9]
можно считать его одномерным массивом.
Что вы хотите получить из него, ведь вариантов может быть очень много,
напрмер
l=[
[1,2,3],
[4,5,6],
[7,8,9]
]
или
l=[
[1,2,3,4,5],
[6,7,8,9, None]
]
FishHook
Короче, зависит от задачи. Давайте конкретный пример.
mr-x
На мой ламерский взгляд можно воспользовать numpy. В нем можно менять размерность массива в любой момент. Хоть сколько мерный хоть какой длины по осям.

Пример вот отсюда: http://habrahabr.ru/post/121031/

>>> a.ravel() # делает массив плоским
array([ 7., 5., 9., 3., 7., 2., 7., 8., 6., 8., 3., 2.])
>>> a.shape = (6, 2)
>>> a.transpose()
array([[ 7., 9., 7., 7., 6., 3.],
[ 5., 3., 2., 8., 8., 2.]])
kate
FishHook
Короче, зависит от задачи. Давайте конкретный пример.
Ну вот к примеру у меня есть массив Q = , насколько я понимаю он одномерный, так? а мне нужно обратится к нему, как к двумерному:
def funk(Q):
x = len(Q)
y = len(Q[0])
Соответственно x оно считывает, при обращении к y возникает проблемма:
y = len(Q[0])
TypeError: object of type 'int' has no len()
Может я конечно, что-то не так делаю и что-то не так понимаю, так что прошу разъяснить мне:)
Yanzay
kate
Может я конечно, что-то не так делаю и что-то не так понимаю
скорее всего так и есть, можете описать задачу более полно? что это за функция и что она должна делать?
mr-x
Может так?
Q или Q
kate
Yanzay
kate
Может я конечно, что-то не так делаю и что-то не так понимаю
скорее всего так и есть, можете описать задачу более полно? что это за функция и что она должна делать?
Ну собственно сюда мне нужно передать массив вида Q = . Вызываю я эту функцию и ловлю ошибку про которую писала выше.
def funk(S):
x = len(S)
y = len(S[0])

result = [[0 for j in range(y)] for i in range(x)]

result[0][0] = S[0][0]

for i in range(1, x):
result[i][0] = S[i][0] + result[i - 1][0]

for i in range(1, y):
result[0][i] = S[0][i] + result[0][i - 1]

for i in range(1,x):
for j in range(1, y):
result[i][j] = S[i][j] + result[i - 1][j] + \
result[i][j - 1] + result[i - 1][j - 1]

return result
alexzander77
funk() чтото делает
Piton23
Раз уж тайна задачи остается за 7 замками то объясним хотяб ей что за ошибка )
Q - последовательность, итерируемый объект
число (такое как 5, 18 или 69) - не итерируемый объект

Так вот функция len над итерируемым объектом возвращает количество, если список то количество элементов, если строка то количество символов.

Вы же когда запрашиваете len(S) спрашиваете чему равна длина первого элемента списка, т.е. len(1) на что и получаете ошибку. А ведь действительно нельзя ж подсчитать длину числа.

В итоге вы либо говорите конкретную задачу которую вам нужно решить и получаете решение за пол часа, т.е. приводите пример двухмерного массива. Либо если вам нужен репетитор чтобы спрашивать а что в этой строчке не так, а что в этой, я думаю желающих по уменьшится :)
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