附加到嵌套NumPy数组

2024-04-30 04:03:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个NumPy数组列表:

self.xy_lat_lon_list = [array([3986139.12431615, 3889959.08475953]),
                        array([3987252.31922408, 3889959.08475953]),
                        array([3988365.51413201, 3889959.08475953]),
                        array([3989478.70903994, 3889959.08475953]),
                        array([3990591.90394788, 3889959.08475953]),
                        array([3991705.09885581, 3889959.08475953]),
                        array([3992818.29376374, 3889959.08475953]),....]

我需要向每个数组(相同的数组)附加一个整数 例如:

uav_elev = 1900

输出:

self.xy_lat_lon_list = [array([3986139.12431615, 3889959.08475953,1900]),
                        array([3987252.31922408, 3889959.08475953,1900]),
                        array([3988365.51413201, 3889959.08475953,1900]),
                        array([3989478.70903994, 3889959.08475953,1900]),
                        array([3990591.90394788, 3889959.08475953,1900]),
                        array([3991705.09885581, 3889959.08475953,1900]),
                        array([3992818.29376374, 3889959.08475953,1900]),....]

我试着用列表理解,但在什么地方迷路了。你知道吗

在常规for循环中:

for l in self.xy_lat_lon_list:
    l. # I thought that I will get append or insert here but It's not. 

Tags: selfnumpy列表for地方整数数组array
2条回答

insert函数正是您想要的:

np.insert(self.xy_lat_lon_list, 2, uav_elev, axis=1)

但它返回一个2D数组,因此如果需要将其转换回1D数组列表,只需对其应用list()函数即可。你知道吗

列清单:

In [107]: alist = [np.array([3986139.12431615, 3889959.08475953]), 
     ...:                         np.array([3987252.31922408, 3889959.08475953])
     ...: , 
     ...:                         np.array([3988365.51413201, 3889959.08475953])
     ...: , 
     ...:                         np.array([3989478.70903994, 3889959.08475953])
     ...: ] 
     ...:                                                                       
In [108]: alist                                                                 
Out[108]: 
[array([3986139.12431615, 3889959.08475953]),
 array([3987252.31922408, 3889959.08475953]),
 array([3988365.51413201, 3889959.08475953]),
 array([3989478.70903994, 3889959.08475953])]

将值分别添加到每个数组:

In [109]: [np.concatenate((arr, [1900]),axis=0) for arr in alist]               
Out[109]: 
[array([3.98613912e+06, 3.88995908e+06, 1.90000000e+03]),
 array([3.98725232e+06, 3.88995908e+06, 1.90000000e+03]),
 array([3.98836551e+06, 3.88995908e+06, 1.90000000e+03]),
 array([3.98947871e+06, 3.88995908e+06, 1.90000000e+03])]

np.append在这里也可以。它只是调用concatenate的另一种方法。你知道吗

或者可以将这些数组合并到一个二维数组中(只要大小相同):

In [110]: arr = np.vstack(alist)                                                
In [111]: arr                                                                   
Out[111]: 
array([[3986139.12431615, 3889959.08475953],
       [3987252.31922408, 3889959.08475953],
       [3988365.51413201, 3889959.08475953],
       [3989478.70903994, 3889959.08475953]])

并串联一列垂直的值:

In [112]: np.concatenate((arr, np.ones((4,1))*1900), axis=1)                    
Out[112]: 
array([[3.98613912e+06, 3.88995908e+06, 1.90000000e+03],
       [3.98725232e+06, 3.88995908e+06, 1.90000000e+03],
       [3.98836551e+06, 3.88995908e+06, 1.90000000e+03],
       [3.98947871e+06, 3.88995908e+06, 1.90000000e+03]])

相关问题 更多 >