np.column_stack()在循环中使用

时间:2017-02-20 20:20:30

标签: python-2.7

我想知道是否有办法使这段代码有效。希望它清楚我想做什么。

我希望在每次迭代后,在数组中创建一个新行。相反,似乎前一行被覆盖 - 毫不奇怪。

还有其他办法吗?

list1 = [4, 5]   

for j in list1:

           one = j + 1
           two = j + 2
           array = np.column_stack( (one, two) )

print(array)

#Output
[[ 6 7]]

#What I actually want
[[ 5 6]
 [ 6 7]]

1 个答案:

答案 0 :(得分:0)

在Python中执行此操作的自然方法是:

import numpy

list1 = [4,5]
array = numpy.column_stack((j+1,j+2) for j in list1)

print(array)

有些人将这种编码方式称为pythonic,而您的方法更类似于C ++或Java中的方法。如果你继续使用Python,你会习惯它。

咨询numpy.colum_stack的文档,您会发现函数参数是一个将被堆叠的列的元组。进入2d阵列。 这个元组可以生成为

[(j+1,j+2) for j in list1]

(这也是Python代码的有效行)。在函数参数中使用,我们可以省略方括号。

您的示例不起作用,因为您在每个循环迭代中覆盖数组。我建议使用调试器...或在for循环中添加print(数组)以更好地理解正在进行的操作。