我试图将一维numpy数组附加到二维,所以将一维的numpy数组插入另一个x值的位置。
示例:
all_polys = [[5,6],[8,9]](在出现错误之前,还没有存储任何内容)
poly = [1,2]
预期结果:
all_polys = [[5,6],[8,9],[1,2]]
我的代码:
all_polys = numpy.array([[]])
poly = np.expand_dims(poly, axis=0)
print(poly)
print(all_polys)
all_polys = np.concatenate(all_polys, poly)
错误:
TypeError:仅整数标量数组可以转换为标量索引
在错误之前打印输出:
[[''400''815''650''815''650''745''400''745']](具有增加尺寸的多边形)
[](all_polies)
这真的让我感到沮丧。我做错了什么?我想这一定是我忽略了的细节。
答案 0 :(得分:1)
从2d数组和1d数组开始:
In [26]: all_polys = np.array([[5,6],[8,9]])
In [27]: poly = np.array([1,2])
vstack
可以很好地确保所有输入均为2d,然后进行串联:
In [28]: np.vstack((all_polys, poly))
Out[28]:
array([[5, 6],
[8, 9],
[1, 2]])
您拥有expand_dims
的正确想法:
In [29]: np.concatenate((all_polys, np.expand_dims(poly, axis=0)))
Out[29]:
array([[5, 6],
[8, 9],
[1, 2]])
但是np.array([[]])
是一个糟糕的起点。为什么要使用它?您是在反复进行此操作吗?
对于迭代工作,我们建议使用列表:
In [30]: alist = []
In [31]: alist.append([5,6])
In [32]: alist.append([8,9])
In [33]: alist.append([1,2])
In [34]: np.array(alist)
Out[34]:
array([[5, 6],
[8, 9],
[1, 2]])
我不鼓励使用np.append
。它经常被滥用。
答案 1 :(得分:0)
您可以尝试使用append函数来代替expand_dims
import numpy as np
all_polys = [[5,6],
[8,9]]
all_polys = np.append(all_polys,[ [1,2] ], axis=0)
print(all_polys)
#Output=
#all_polys = [[5,6],
# [8,9],
# [1,2]]
答案 2 :(得分:0)
您只需要这样做:
all_polys = np.concatenate((all_polys, poly[None,:]), axis=0)
我们要连接的两个数组是all_polys
,看起来像[[5,6],[8,9]]
,和poly[None,:]
,看起来像[[1.2]]
。
通过axis=0
,我们指定串联必须沿着这些数组的最外层(第一个)维进行。
答案 3 :(得分:0)
您应该这样做。
arr = [old array]
newArr = numpy.append(arr, [new_array])
可以使用append函数。