0

我不知道如何概括 numpy 数组的切片。请参阅以下切片:

x_train = data[:train_set_size,:-1,4:-1]    
x_valid = data[train_set_size:train_set_size+valid_set_size,:-1,4:-1]
x_test = data[train_set_size+valid_set_size:,:-1,4:-1]

y_train = data[:train_set_size,-1,-2:]
y_valid = data[train_set_size:train_set_size+valid_set_size,-1,-2:]
y_test = data[train_set_size+valid_set_size:,-1,-2:]

如您所见, xset 被切片:-1,4:-1y设置为 -1,-2:。如果我必须进行更改,那么我需要更改 3 次,而如果有办法将切片存储在变量中并且只需更改变量并反映更改。

例如:xset_slice = ":-1,4:-1"yset_slice = "-1,-2:"。然后只需将其替换为:

x_train = data[:train_set_size,xset_slice ]    
x_valid = data[train_set_size:train_set_size+valid_set_size,xset_slice ]
x_test = data[train_set_size+valid_set_size:,xset_slice ]
y_train = data[:train_set_size,-1,-2:]
y_valid = data[train_set_size:train_set_size+valid_set_size,yset_slice ]
y_test = data[train_set_size+valid_set_size:,yset_slice]

但是这种说法会出错。因此,请让我知道是否有任何类似的方法可以帮助我。

4

2 回答 2

2

您可以使用sklearn.model_selection.train_test_split

 X_train, X_test, y_train, y_test 
    = train_test_split(X, y, test_size=0.2, random_state=1)

 X_train, X_val, y_train, y_val 
    = train_test_split(X_train, y_train, test_size=0.2, random_state=1)
于 2018-11-29T08:00:30.307 回答
2

slice您可以从对象和元组构造索引:

slice1 = slice(-1)
slice2 = slice(4,-1)
slice3 = slice(-2,None)

x_train = data[:train_set_size,slice1, slice2]    
x_valid = data[train_set_size:train_set_size+valid_set_size, slice1, slice2]
x_test = data[train_set_size+valid_set_size:, slice1, slice2]

通过连接几个元组来创建一个复合元组:

tup1 = (slice1, slice2)
# or with np.s_[:-1, 4:-1]
x_train = data[(slice(train_set_size),+tup1]    
...
于 2018-11-29T08:09:01.923 回答