删除NumPy中的所有其他元素

我不能为我的生活弄清楚这一点。

我试图删除数组的第二个轴上的其他元素。 我在MATLAB中用arr(:,:,2:2:end) = []; ,但是当我试图在Python中做同样的事情并比较两个输出时,我得到了不同的矩阵。

我试过arr = np.delete(arr,np.arange(0,arr.shape[2],2),2)arr = arr[:,:,1::2] ,但似乎都没有出现用MATLAB获得的东西。



例:

MATLAB

    disp(['before: ',str(arr[21,32,11])])
    arr(:,:,2:2:end) = [];
    disp(['after: ',str(arr[21,32,11])])

输出:

    before: 99089
    after: 65699


蟒蛇

    print 'before: ' + str(arr[20,31,10])
    arr = arr[:,:,1::2] # same output as np.delete(arr,np.arange(0,arr.shape[2],2),2) 
    print 'after: ' + str(arr[20,31,10])

输出:

    before: 99089
    after: 62360

我希望我不会忽略一些根本性的东西。


您正尝试从最后一个轴的第二个元素开始删除其他每个元素。 换句话说,你正试图从该轴的第一个元素开始向前保持其他所有元素。

因此,反过来选择元素而不是删除元素,MATLAB代码arr(:,:,2:2:end) = []将等同于(忽略性能数字):

arr = arr(:,:,1:2:end)

在Python / NumPy中,这将是:

arr = arr[:,:,0::2]

或者干脆:

arr = arr[:,:,::2]
链接地址: http://www.djcxy.com/p/86673.html

上一篇: Removing every other element in NumPy

下一篇: Get human readable device/browser combination from user agent string?