我正在尝试将列从数组中切片并分配给一个新变量,就像这样。
array1 = array[:,[0,1,2,3,15,16,17,18,19,20]]
这样的事情是否有捷径?
我尝试了这个,但它引发了一个错误:
array1 = array[:,[0:3,15:20]]
这可能很简单但我无法在任何地方找到它。
答案 0 :(得分:4)
使用np.r_
:
将切片对象转换为沿第一轴的连接。
import numpy as np
arr = np.arange(100).reshape(5, 20)
cols = np.r_[:3, 15:20]
print(arr[:, cols])
[[ 0 1 2 15 16 17 18 19]
[20 21 22 35 36 37 38 39]
[40 41 42 55 56 57 58 59]
[60 61 62 75 76 77 78 79]
[80 81 82 95 96 97 98 99]]
在一天结束时,可能只比你现在的一点点冗长,但对于更复杂的案例可能会派上用场。
答案 1 :(得分:3)
对于大多数这样的简单案例,最好和最直接的方法是使用串联:
array1 = array[0:3] + array[15:20]
对于更复杂的情况,您需要使用自定义切片,例如NumPy的s_
,它允许带有间隙的多个切片,以逗号分隔。你可以阅读它here。
此外,如果你的切片遵循一个模式(即得到5,跳过10,得到5等),你可以使用itertools.compress
,正如用户ncoghlan在this回答中所解释的那样。
答案 2 :(得分:0)
您可以使用list(range(0, 4)) + list(range(15, 20))