我有一组整数,它们需要按4分组。我还想根据另一个标准start < t < stop
选择它们。我试过了
data[group].reshape((-1,4))[start < t < stop]
但抱怨start < t < stop
,因为这是硬编码语法。我可以以某种方式与start < t
和t < stop
的两个数组相交吗?
答案 0 :(得分:2)
array
的布尔索引的正确方法应如下所示:
>>> import numpy as np
>>> a=np.random.randint(0,20,size=24)
>>> b=np.arange(24)
>>> b[(8<a)&(a<15)] #rather than 8<a<15
array([ 3, 5, 6, 11, 13, 16, 17, 18, 20, 21, 22, 23])
但是你可能无法将生成的数组重新整形为(-1,4)
的形状,这里生成的数组包含3 * 4个元素是巧合。
data[group]
,对吧?:
>>> b=np.arange(96)
>>> b.reshape((-1,4))[(8<a)&(a<15)]
array([[12, 13, 14, 15],
[20, 21, 22, 23],
[24, 25, 26, 27],
[44, 45, 46, 47],
[52, 53, 54, 55],
[64, 65, 66, 67],
[68, 69, 70, 71],
[72, 73, 74, 75],
[80, 81, 82, 83],
[84, 85, 86, 87],
[88, 89, 90, 91],
[92, 93, 94, 95]])
答案 1 :(得分:2)
这个怎么样?
import numpy as np
arr = np.arange(32)
t = np.arange(300, 364, 2)
start = 310
stop = 352
mask = np.logical_and(start < t, t < stop)
print mask
print arr[mask].reshape((-1,4))
我在重塑之前做了掩饰,不确定这是不是你想要的。关键部分可能是logical_and()。