删除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?