我有一个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.
答案 0 :(得分:1)
列出您的名单:
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
的另一种方法。
或者您可以将这些数组合并为一个2d数组(只要它们的大小相同):
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]])
答案 1 :(得分:0)
insert函数可以完全满足您的要求:
np.insert(self.xy_lat_lon_list, 2, uav_elev, axis=1)
尽管它返回2D数组,所以如果您需要将其转换回1D数组列表,只需在其上应用list()
函数。