[英]python list / numpy array indexing using tuple unpacking possible?
我想知道是否可以在“从...到索引”类型的样式中使用元组拆包,因此使用inds = (a,b)
, M[*inds]
将导致M[a:b]
。
我经常有一个元组,其中包含一些索引,这些索引用于将数据切成一些有趣的子集,并认为像上面建议的那样会很方便。 有没有办法做到这一点?
感谢您的输入
您可以使用元组拆包,但必须将它们拆包为slice
,然后使用该切片进行索引:
>>> A = list(range(10))
>>> inds = 3, 6
>>> A[slice(*inds)]
[3, 4, 5]
也适用于numpy
:
>>> B = np.array([[1,2,3],[4,5,6],[7,8,9]])
>>> ind_x, ind_y = (0,2), (1,None)
>>> B[slice(*ind_x),slice(*ind_y)]
array([[2, 3],
[5, 6]])
请记住, A[start:stop:step]
只是A[slice(start,stop,step)]
语法糖。
您不能使用tuples
(至少不能以开始-停止-步骤的方式)。 但是您始终可以使用slice 。
一些例子:
indx = slice(start, stop, step)
indy = slice(starty, stopy, stepy)
sliced = M[indx]
sliced2 = M[:,indy]
sliced3 = M[(indx, indy)]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.