我想知道是否有办法使这段代码有效。希望它清楚我想做什么。
我希望在每次迭代后,在数组中创建一个新行。相反,似乎前一行被覆盖 - 毫不奇怪。
还有其他办法吗?
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]]
答案 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(数组)以更好地理解正在进行的操作。