我无法为我的生活弄清楚这一点。
我正在尝试删除数组第二轴中的所有其他元素。我在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
的Python
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
我希望我不会忽略一些基本的东西。
答案 0 :(得分:4)
您正尝试从最后一个轴的第二个元素开始删除所有其他元素。换句话说,您试图保持每个其他元素从该轴的第一个元素开始。
因此,使用其他方式选择元素而不是删除元素,MATLAB代码arr(:,:,2:2:end) = []
将等同于(忽略性能数字):
arr = arr(:,:,1:2:end)
在Python / NumPy中,这将是:
arr = arr[:,:,0::2]
或者简单地说:
arr = arr[:,:,::2]