推广Numpy切片Python
我不知道如何推广numpy数组的切片。 请参见以下切片:推广Numpy切片Python,python,python-3.x,numpy,numpy-slicing,Python,Python 3.x,Numpy,Numpy Slicing,我不知道如何推广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 = d
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:]
如您所见,x
集被分为:-1,4:-1
和y
集为-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]
但这种说法是错误的。因此,请告诉我是否有任何类似的方法可以帮助我。您可以使用
sklearn.model\u selection.train\u test\u 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)
您可以使用
sklearn.model\u selection.train\u test\u 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)
您可以从
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]
...
您可以从
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]
...
对于
[1:2]
的切片,您将保存x=1
和y=2
,然后执行[x:y]
。你不能用字符串切分。@Ev.Kounis我也有类似的想法。但是有一种混乱。如果我需要对最后一列进行切片,那么我会尝试[-1]
或[-1:]
,那么x
和y
有什么值呢?对于[1:2]
的切片,您将保存x=1
和y=2
,然后执行[x:y]/code>。你不能用字符串切分。@Ev.Kounis我也有类似的想法。但是有一种混乱。如果我需要对最后一列进行切片,那么我会尝试[-1]
或[-1:]
,那么x和y
的值是多少呢?这可能会有所帮助,但@hpaulj的上述答案对我的场景来说非常令人印象深刻。谢谢你的回答。我会向上投票。这可能会有帮助,但上面@hpaulj的答案对我的场景来说非常令人印象深刻。谢谢你的回答。我会投票的。这很有趣@hpaulj。我将努力实现你的答案。谢谢你的回答,并继续回答。这很有趣@hpaulj。我将努力实现你的答案。谢谢你的回答,请继续回答。