我有一个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)
我不确定如何使用生成器来堆叠列表,而不是附加列表。
答案 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循环更快。