在二维numpy数组的新x值中附加一维numpy数组

时间:2019-03-09 18:39:13

标签: python arrays numpy

我试图将一维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)

这真的让我感到沮丧。我做错了什么?我想这一定是我忽略了的细节。

4 个答案:

答案 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函数。