[英]Remove alternate columns and row of 2d numpy array
我有一个问题,我需要删除 2D numpy 数组的备用列和行。
我试过使用 numpy.delete 这样做,但结果并没有变成我想要的......
for x in range(rows):
if x %2 ==0:
array_np=np.delete(array_np,1,axis=1)
for y in range(columns):
if y %2 ==0:
array_np=np.delete(array_np,1,axis=0)
例如。
[[1,2,3,4],
[5,6,7,8],
[9,10,11,12],
[13,14,15,16]]
预期输出:
[[1,3],
[9,11]]
数组的大小比这大得多,但想法是一样的。
您可以尝试使用list(range(1, array.shape[0], 2))
生成奇数列表,然后您可以构建需要删除的所有列的列表。
a = np.array([[1,2,3,4],
... [5,6,7,8],
... [9,10,11,12],
... [13,14,15,16]])
>>> np.delete(a, range(1, a.shape[0], 2), axis=0)
array([[ 1, 2, 3, 4],
[ 9, 10, 11, 12]])
>>> np.delete(a, range(1, a.shape[1], 2), axis=1)
array([[ 1, 3],
[ 5, 7],
[ 9, 11],
[13, 15]])
如果您将两者结合起来,您应该实现我所理解的您想要的。
import numpy as np
arr_np = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12], [13,14,15,16]])
arr_all_odd=np.delete(arr_np, list(range(1, arr_np.shape[0], 2)), axis=1)
arr_odd_odd=np.delete(arr_all_odd, list(range(1, arr_np.shape[1], 2)), axis=0)
print(arr_odd_odd)
输出:
[[ 1 3]
[ 9 11]]
你可以用同样的方法制作 arr_odd_even、arr_even_odd 或 arr_even_even。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.