合并数组

-3 投票
3 回答
2278 浏览
提问于 2025-04-17 00:16

我有三个独立的一维数组,分别存放一些数字、这些数字的平方和立方(是通过一个'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

你为什么不直接定义 yz 呢?

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

然后简单地:

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

这样你就得到了一个形状为 len(x) * 3 的二维数组。

撰写回答