如何从数组中堆叠元素(不包括单个索引)

时间:2019-02-13 12:28:44

标签: python numpy

我有一个5x10x100的数组,想排除一个索引,然后将其余的索引堆叠在一起,从而得到40x100的数组。

old_arr.shape
>> (5, 10, 100)

我尝试了以下单行生成器:

i_to_exclude = 4
new_arr = np.array([element for i, element in enumerate(old_arr) if i != i_to_exclude])
new_arr.shape
>> (4, 10, 100)

我不确定如何使用生成器来堆叠列表,而不是附加列表。

1 个答案:

答案 0 :(得分:1)

尝试一下:

np.vstack(np.delete(old_arr, i_to_exclude , axis = 0))

示例

old_arr = np.arange(16).reshape((4,2,2))
#array([[[ 0,  1],
#        [ 2,  3]],
#       [[ 4,  5],
#        [ 6,  7]],
#       [[ 8,  9],
#        [10, 11]],
#       [[12, 13],
#        [14, 15]]])

i_to_exclude = 3
new_arr = np.vstack(np.delete(old_arr, i_to_exclude , axis = 0))
#array([[ 0,  1],
#       [ 2,  3],
#       [ 4,  5],
#       [ 6,  7],
#       [ 8,  9],
#       [10, 11]])

这也将比使用for循环更快。