Python:将元素插入大小不同的数组中

时间:2018-12-03 10:29:25

标签: python numpy

我有一个像这样的numpy数组:

[[[287  26]]

 [[286  27]]

 [[285  27]]

 ...

 [[290  27]]

 [[289  26]]

 [[288  26]]]

,我想插入一个整数并使它像

这样的数组
[
[287  26 integer]
[286  27 integer]
.......]

但是,由于第一个数组的大小与结尾处的大小不同,因此简单地使用insert()函数对我不起作用。

有没有解决的办法?

谢谢。

编辑:所以到目前为止我最接近的是:

outline_poses = []  # final array
 for cnt in cnts: # loop over each element
        outline_poses.append(cnt[0]) 
        outline_poses.append(SENSOR_MEASURED_HEIGHT) #Append this integer

输出:

[array([287,  26], dtype=int32), 60, array([286,  27], dtype=int32), 60,....]

如何组织此数组并使它看起来像[287, 26, 60],...

3 个答案:

答案 0 :(得分:1)

如果我正确理解您的问题,则可以使用列表理解。

newList = np.array([np.append(x[0],integer) for x in myList]) 

答案 1 :(得分:0)

这是三维维度列表,您在这里...

>>> myList = [[[287,  26]],
 [[286,  27]],
 [[285,  27]],
 [[290,  27]],
 [[289,  26]],
 [[288,  26]]]

...因此,在将元素插入或添加到最深列表中之前,您需要以两个级别的深度访问列表。

>>> myList[0][0].append(42)
>>> myList[5][0].append(42)
>>> myList
[[[287, 26, 42]],
 [[286, 27]], 
 [[285, 27]], 
 [[290, 27]], 
 [[289, 26]], 
 [[288, 26, 42]]]

当您插入或追加深度较浅的元素时会发生什么?

附加在深度0

>>> myList.append('Catapult')
>>> myList
[[[287, 26, 42], 'Trebuchet'],
 [[286, 27]], 
 [[285, 27]], 
 [[290, 27]], 
 [[289, 26]], 
 [[288, 26, 42]],
 'Catapult']

附加到深度1

>>> myList[0].append('Trebuchet')
>>> myList[3].append('Treebuchet')
>>> myList
[[[287, 26, 42], 'Trebuchet'],
 [[286, 27]], 
 [[285, 27]], 
 [[290, 27], 'Treebuchet'], 
 [[289, 26]], 
 [[288, 26, 42]]]

答案 2 :(得分:0)

如果我是对的,您正在尝试将一个整数插入所有内部列表。您可以使用numpy串联方法来实现。

integer_to_insert = 6
original_array = np.array([[[290,  27]],[[289,  26]],[[288,  26]]])
concat_integer = np.array([integer_to_insert]* original_array.shape[0]).reshape(original_array.shape[0], 1,1) 
# This is correct if you are inserting the same integer to all lists. But as long as length of this array is equal to length of original list this array can be replaced.

concatenated = np.concatenate([original_array, concat_integer], 2)
print(concatenated)
# array([[[290,  27,   6]],
# [[289,  26,   6]],
# [[288,  26,   6]]])