将坐标对追加到numpy数组

时间:2019-05-25 09:12:27

标签: arrays python-3.x numpy

我需要在python 3.6中使用numpy将一维数组(坐标)附加到二维数组中。

我可以使用append使用列表进行操作,例如下面的第一个示例。

mastlist =[]
i=0
for i in  range (10):
    i=i+1
    coor = []
    xcoor = i
    ycoor =i*2
    coor.append(xcoor)
    coor.append(ycoor)
    mastlist.append(coor)
print(mastlist)

但是我想要使用numpy数组的高性能方法。当我尝试将列表方法转换为数组时(第二个示例),

import numpy as np
i=0
for i in  range (10):
    i=i+1
    centroid =np.append(i,i*2)
    masterarray=np.append([centroid],axis=0)
    print(masterarray)

print(masterarray)

我收到以下错误。

我的错误是:

  

TypeError:append()缺少1个必需的位置参数:“值”

我期望有一个数组,例如:

[[1, 2], [2, 4], [3, 6], [4, 8], [5, 10], [6, 12], [7, 14], [8, 16], [9, 18], [10, 20]]

我也对使用extendvstackconcatenate的尝试感到困惑。

任何建议都将受到欢迎。

2 个答案:

答案 0 :(得分:1)

为什么不仅仅使用列表理解?

import numpy as np

masterarray = np.array([[i,2*i] for i in range(1,11)])

输出

array([[ 1,  2],
       [ 2,  4],
       [ 3,  6],
       [ 4,  8],
       [ 5, 10],
       [ 6, 12],
       [ 7, 14],
       [ 8, 16],
       [ 9, 18],
       [10, 20]])

答案 1 :(得分:1)

我建议您首先获取单个坐标数据,然后再将它们连接起来。据我所知,我认为这不能通过np.append

完成

常见的方法是np.concatenate,我从cs231n类中看到了它。

我的示例代码如下:

import numpy as np
xcoor = np.arange(1,11,1).reshape(-1,1)
ycoor = np.arange(2,22,2).reshape(-1,1)
xycoor = np.concatenate((xcoor,ycoor),axis = 1)
print(xycoor)

输出:

[[ 1  2]
 [ 2  4]
 [ 3  6]
 [ 4  8]
 [ 5 10]
 [ 6 12]
 [ 7 14]
 [ 8 16]
 [ 9 18]
 [10 20]]
相关问题