首页 > 解决方案 > 在二维 numpy 数组的新 x 值中附加一维 numpy 数组

问题描述

我正在尝试将一维 numpy 数组附加到二维,因此将一维数组插入到另一个 x 值的位置。

例子:

all_polys = [[5,6],[8,9]] (在下面的错误之前,其中还没有存储任何内容)

聚 = [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)

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

标签: pythonarraysnumpy

解决方案


从二维数组和一维数组开始:

In [26]: all_polys = np.array([[5,6],[8,9]])                                    
In [27]: poly = np.array([1,2])                                                 

vstack确保所有输入都是二维的,然后连接:

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. 它被滥用得太频繁了。


推荐阅读