合并数组
我有三个独立的一维数组,分别存放一些数字、这些数字的平方和立方(是通过一个'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
你需要用到 column_stack 这个功能。你试过这个方法吗:
w = numpy.column_stack((x,y,z))
print(w)
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]
是对这个数组第列的引用(也就是说,选择这一列的所有值,用:
表示)。
我强烈建议你去看看这个 Numpy教程。
1
你为什么不直接定义 y
和 z
呢?
y = x**2
z = x**3
然后简单地:
stacked = np.column_stack((x,y,z))
这样你就得到了一个形状为 len(x) * 3
的二维数组。