代码之家  ›  专栏  ›  技术社区  ›  Schütze

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

  •  0
  • Schütze  · 技术社区  · 6 年前

    我有一个像这样的麻木数组:

    [[[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 回复  |  直到 6 年前
        1
  •  1
  •   Tim Maier    6 年前

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

    newList = np.array([np.append(x[0],integer) for x in myList]) 
    
        2
  •  0
  •   TrebledJ    6 年前

    这是一个 -你这里的尺寸表…

    >>> 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]]]
    
        3
  •  0
  •   Mitiku    6 年前

    如果我是正确的,您将尝试向所有内部列表插入一个整数。可以使用numpy concatenate方法来实现这一点。

    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]]])