我需要在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]]
我也对使用extend
,vstack
和concatenate
的尝试感到困惑。
任何建议都将受到欢迎。
答案 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]]