使用切片分割numpy ndarray

时间:2014-01-09 18:18:43

标签: python numpy slice

Python 2.7.3 numpy 1.8.0

大家好, 我使用numpy几个月,我需要帮助一些基本的东西。下面的代码应该有效,我需要帮助的位突出显示(#<<<<<<<<<<<<<<<<<<<

import numpy as np

rng = np.random.RandomState(12345)

samples = np.array(np.arange(400).reshape(50, 8))
nSamples = samples.shape[0]
FOLDS = 15 

foldSize = nSamples / FOLDS

indices = np.arange(nSamples)
rng.shuffle(indices)

slices = [slice(i * foldSize ,
               (i + 1) * foldSize, 1) for i in xrange(FOLDS + 1)]

for i in xrange(len(slices)):
    y = samples[indices[slices[i]]]
    x = np.array([x for x in samples if x not in samples[slices[i]]]) # <<<<<<<
    #do some processing with x and y    

基本上随机切片2D数组,使用完整数组在切片位中进行处理和测试,然后重复为另一个切片工具完成所有操作(称为交叉验证实验)。

我的问题是:有没有更好的方法来选择ndarray中的所有行但是切片?我错过了什么吗?如果x不在样本[index] [0:3]中,那么[x对于样本中x的建议方法是什么]?

提前致谢。

ps:蒙面数组无法解决我的问题。 ps1:我知道它已经在别处实现了,我只需要学习。

1 个答案:

答案 0 :(得分:0)

您可以为要选择的行创建一个布尔数组,如下所示:

indices_to_ignore = [1, 2, 3]
mask = np.ones(samples.shape[:1], dtype=np.bool)
mask[indices_to_ignore] = 0
samples[mask].shape