我有vstacked图像数据,现在我想把它分成一个训练和测试集。
但是,如何初始化一个空的numpy数组以启动vstacking?在
我的简化代码如下:#k-fold the data
kf = cross_validation.KFold(n, n_folds=2)
fold = 0
for train_ind, test_ind in kf:
#Get the persons of k-fold
train_pers = unique[train_ind]
test_pers = unique[test_ind]
#Set train+test stack to empty
self.train_stack = type(self.pca_data[0])
self.test_stack = type(self.pca_data[0])
#For all test data
for data in range(len(self.pca_data)):
print(self.pca_pers[data])
if self.pca_pers[data] in train_pers:
#Add to train stack
self.train_stack = np.vstack((self.train_stack, self.pca_data[data]))
elif self.pca_pers[data] in test_pers:
#Add to test stack
self.test_stack = np.vstack((self.test_stack, self.pca_data[data]))
else:
#Something wrong
print(data)
sys.exit("Strange strange data")
fold += 1
此处的导入代码为:
^{pr2}$
以及#Add to train stack
self.train_stack = np.vstack((self.train_stack, self.pca_data[fold][data]))
self.pca_数据包含所有图像数据,这些数据必须分布在self.train_堆栈和self.test_堆栈。我尝试了type()函数,但这似乎是错误的。我也试过self.train_堆栈=[],但这会产生错误“ValueError:array dimensions must agreed except d_0”。如果我想用数字0,那么第一个堆栈是0的,我希望它在vstacking之前完全空。在
问题
初始化空numpy数组的正确方法是什么?(类型'努比·恩达雷')
请注意,self.train_堆栈处于循环中,因此if语句(对于if变量不存在)在第二次进入循环时不会重置该变量。在
变量在self.pca_数据:形状(978,20)类型(类型'努比·恩达雷')
在自我pca:形状(978,1)类型(类型'努比·恩达雷')
在self.test_堆栈以及self.train_堆栈例如形状(489,20)和形状(489,20)类似self.pca_数据在
其他可以忽略的变量