如何使用 numpy 在 Python 中从数组中间删除/移动元素?

问题描述 投票:0回答:1

假设数组是[1,2,3,4]。我想让这个数组像这样 [1,3,4,None]。 说明:我想删除 2 并在数组末尾插入 None 。帮助我仅使用 numpy 和基本循环,(不使用删除、弹出)

感谢您的帮助,请随时提供建议

import numpy as np

def shift(arr):
    
    for i in range(0,len(arr)-1):
        if arr[i] == 2:
            arr[i] = arr[i+1]
    #arr[len(arr)-1] = None <--- this line also giving error 
    return arr

arr = np.array([1,2,3,4,5])
print(shift(arr))
python numpy numpy-ndarray
1个回答
0
投票

我会使用布尔掩码进行索引,然后

pad
:

arr = np.array([1,2,3,4,5])
mask = arr == 2

out = np.pad(arr[~mask].astype(float), (0, mask.sum()), constant_values=np.nan)

输出:

array([ 1.,  3.,  4.,  5., nan])

© www.soinside.com 2019 - 2024. All rights reserved.