组合数组

时间:2011-08-24 14:32:45

标签: python numpy

我有三个单独的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 个答案:

答案 0 :(得分:1)

为什么不直接定义yz

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

然后简单地说:

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

为您提供形状len(x) * 3

的2D数组

答案 1 :(得分:1)

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

使用数组时,应尽量避免使用for循环,这就是数组的重点。

a = np.zeros((len(x),3))创建一个长度与x和3列相同的数组 a[:,i]是对此数组的第i列的引用(即,在此(:)列中选择所有值(由i表示))

我强烈建议您查看Numpy Tutorial

答案 2 :(得分:0)

你确实想要column_stack。你试过了吗?

w = numpy.column_stack((x,y,z))
print(w)