我有一个像这样的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],...
?
答案 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]]])