在给定的范围内,是否可以将索引数组转换为1和0数组? i、 e.[2,3]->;[0,0,1,1,0],范围为5
我正试着把这样的事情自动化:
>>> index_array = np.arange(200,300)
array([200, 201, ... , 299])
>>> mask_array = ??? # some function of index_array and 500
array([0, 0, 0, ..., 1, 1, 1, ... , 0, 0, 0])
>>> train(data[mask_array]) # trains with 200~299
>>> predict(data[~mask_array]) # predicts with 0~199, 300~499
有一个很好的技巧可以将其作为一个单独的行来完成,也可以使用这样的
numpy.in1d
和numpy.arange
函数(最后一行是关键部分):这种方法的缺点是它比沃伦·韦克瑟提出的方法慢10-100倍。。。但这是一条单行线,可能是也可能不是你要找的。
有一种方法:
如果掩码始终是一个范围,则可以消除
index_array
,并将1
分配给切片:如果需要布尔值数组而不是整数,请在创建时更改
mask_array
的dtype
:对于单个维度,请尝试:
对于多个维度,请将n维索引转换为一维索引,然后使用ravel:
相关问题 更多 >
编程相关推荐