объединение массивов - PullRequest
       1

объединение массивов

0 голосов
/ 24 августа 2011

У меня есть три отдельных 1d массива списка чисел, их квадратов и кубов (созданных с помощью цикла 'for').Я хотел бы, чтобы эти массивы появлялись в трех соответствующих столбцах, однако я пробовал функцию column_stack, и python говорит, что она не определена.Я читал о функциях vstack и hstack, но запутался в том, что использовать и что именно они делают.Мой код пока что читает:

import numpy
makearange = lambda a: numpy.arange(int(a[0]),int(a[1]),int(a[2]))
x = makearange(raw_input('Enter start,stop,increment: ').split(','))
y = numpy.zeros(len(x), dtype=int)
z = numpy.zeros(len(x), dtype=int)
for i in range(len(x)):
    y[i] = x[i]**2
for i in range(len(x)):
    z[i] = x[i]**3
print 'original array: ',x
print 'squared array: ',y
print 'cubed array: ', z

Буду признателен за любой совет

Ответы [ 3 ]

1 голос
/ 24 августа 2011
import numpy
makearange = lambda a: numpy.arange(int(a[0]),int(a[1]),int(a[2]))
x = makearange(raw_input('Enter start,stop,increment: ').split(','))
a = np.zeros((len(x),3))
a[:,0] = x
a[:,1] = x**2
a[:,2] = x**3

При использовании массивов вы должны избегать циклов как можно больше, это своего рода точка массивов.

a = np.zeros((len(x),3)) создает массив длины такой же как x и с 3 столбцами a[:,i] - это ссылка на i-й столбец этого массива (т.е. выберите все значения (обозначенные :) вдоль этого (i) столбца)

Я настоятельно рекомендую вам взглянуть на Numpy Tutorial .

1 голос
/ 24 августа 2011

Почему бы вам не определить y и z напрямую?

y = x**2
z = x**3

, а затем просто:

stacked = np.column_stack((x,y,z))

, что дает вам двумерный массив формы len(x) * 3

0 голосов
/ 24 августа 2011

Вы хотите column_stack . Вы пробовали:

w = numpy.column_stack((x,y,z))
print(w)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...