我在两个文本文件中给出了训练数据及其相应的标签(整数1,2,...,9)。两个文本文件都是数字序列。
训练集中的前500个数字对应第一个数据点,第二个500个数字对应第二个数据点等。
我想提取具有标签2或标签3的训练点子集。我的实现非常慢:
import numpy as np
ytrain_old = np.genfromtxt('TrainLabels.txt')
Xtrain_old = np.genfromtxt('Train.txt')
Xtrain = []
ytrain = []
for i in range(10000):
if (ytrain_old[i]==2) or (ytrain_old[i]==3):
ytrain.append(ytrain_old[i])
Xtrain.append([Xtrain_old[i*500:(i+1)*500]])
最好的办法是什么?我更愿意将它作为熊猫数据帧实际使用。
答案 0 :(得分:0)
首先,我会合并xtrain和ytrain。为此,我们需要转动你的x帧:
xtrain_old = pd.Series(np.random.random(10000)).to_frame()
ytrain_old = pd.Series(np.random.randint(5, size=20))
xtrain_old['column_names'] = 'feature_'+ (xtrain_old.index%500).astype(str)
xtrain_old.index = np.floor(xtrain_old.index/500).astype(int)
xtrain_old = xtrain_old.pivot(columns='column_names')
xtrain_old.columns = xtrain_old.columns.droplevel()
现在我们可以合并标签:
ytrain_old = ytrain_old.rename('label')
df = pd.concat([xtrain_old, ytrain_old], axis=1)
并选择包含我们关注标签的所有行:
df_selected = df.loc[df['label'].isin([2,3])]
答案 1 :(得分:0)
怎么样:
List list = web.Lists.GetByTitle("mydoc");