Python 将多个numpy文件的数据聚合为一个

Python 将多个numpy文件的数据聚合为一个,python,numpy,Python,Numpy,我有一个列表,其中包含一个数据集的6个不同子数据集。我想执行6倍交叉验证。因此,在每次6个步骤的for循环中,将我的数据集分为2组(训练将包含5个子数据集和测试集-包含leave one子数据集)。我的代码如下所示: 编辑(考虑评论): sets = ['datasets/1.pickle', 'datasets/2.pickle', ..., 'datasets/6.pickle'] for i in range(0,7): train_set = sets[:i]+sets[i+1:]

我有一个列表,其中包含一个数据集的6个不同子数据集。我想执行6倍交叉验证。因此,在每次6个步骤的for循环中,将我的数据集分为2组(训练将包含5个子数据集和测试集-包含leave one子数据集)。我的代码如下所示:

编辑(考虑评论):

sets = ['datasets/1.pickle', 'datasets/2.pickle', ..., 'datasets/6.pickle']
for i in range(0,7):
  train_set = sets[:i]+sets[i+1:]
  test_data, test_lbls = crossValidFiles(sets[i]) # returns the data for a specific sub-samlpe, returns two numpy arrays.
  for item in train_set:
      train_set = [(train_data, train_lbls) for crossValidFiles(item) in train_set]
      train_data = np.concatenate([a for (a,b) in train_set], axis = 0)
      train_lbls = np.concatenate([b for (a,b) in train_set], axis = 0)
      #train_data, train_lbls = crossValidFiles(item) # that returns one file at time.

如何聚合为训练集返回的文件?

您可以使用
np.concatenate()

e、 g

为了处理您的文件,我将为您的数据提取
train\u数据
train\u lbls
,然后列出每个数据的列表。e、 g:

import numpy as np
t1 = [np.array([[1,2,3],[4,5,6]]), np.array(['train_lbls'])]
t2 = [np.array([[7,8,9],[10,11,12]]), np.array(['train_lbls'])]
train_set = [t1,t2]
train_set = [(train_data, train_lbls) for crossValidFiles(item) in train_set]
train_data = np.concatenate([a for (a,b) in train_set], axis=0)
train_lbls = np.concatenate([b for (a,b) in train_set], axis=0)

您可以使用
np.concatenate()

e、 g

为了处理您的文件,我将为您的数据提取
train\u数据
train\u lbls
,然后列出每个数据的列表。e、 g:

import numpy as np
t1 = [np.array([[1,2,3],[4,5,6]]), np.array(['train_lbls'])]
t2 = [np.array([[7,8,9],[10,11,12]]), np.array(['train_lbls'])]
train_set = [t1,t2]
train_set = [(train_data, train_lbls) for crossValidFiles(item) in train_set]
train_data = np.concatenate([a for (a,b) in train_set], axis=0)
train_lbls = np.concatenate([b for (a,b) in train_set], axis=0)
或者,您可以在crossValidFiles函数中使用np.concatenate,以便在聚合的测试数据上运行其中的任何代码

import numpy as np

def crossValidFiles(input_file):
    data, labels = some_load_function(input_file)
    return data, labels

def some_load_function(input_file):
    # Check if the input file is a string or list-like
    if isinstance(input_file, str):
        train_array = some_load_function_2(input_file)
    else:
        train_array = np.concatenate([some_load_function_2(f) for f in input_file], axis=0)

    # rest of your code to create variables 'data' and 'labels'
    return data, labels


.

或者,您可以在crossValidFiles函数中使用np.concatenate,以便在聚合测试数据上运行其中的任何代码

import numpy as np

def crossValidFiles(input_file):
    data, labels = some_load_function(input_file)
    return data, labels

def some_load_function(input_file):
    # Check if the input file is a string or list-like
    if isinstance(input_file, str):
        train_array = some_load_function_2(input_file)
    else:
        train_array = np.concatenate([some_load_function_2(f) for f in input_file], axis=0)

    # rest of your code to create variables 'data' and 'labels'
    return data, labels



.

我可以在for循环中执行此操作吗?我收到消息cant assign to function call for the usage of CrossValidFile。您可以将代码和错误编辑到问题中吗?我修改了问题!等等,现在对你有用吗?或者您仍然收到错误?我可以在for循环中执行此操作吗?我正在接收消息cant assign to function call以使用CrossValidFile。您可以将代码和错误编辑到问题中吗?我修改了问题!等等,现在对你有用吗?还是您仍然收到错误?我的some_load_函数返回两个numpy数组的数据和标签。因此,当我运行“train_array=np.concatenate([some_load_function(f)for f in input_file],axis=0)”时,我收到了以下错误:ValueError:无法将输入数组从shape()扩展到shape()。在这种情况下,您可以将if else块放在some_load_函数定义中(编辑了我的答案)。我遗漏了很多,因为我不知道你的函数是什么样子的。Mason的答案也应该有效。我的some_load_函数返回两个numpy数组,其中包含数据和标签。因此,当我运行“train_array=np.concatenate([some_load_function(f)for f in input_file],axis=0)”时,我收到了以下错误:ValueError:无法将输入数组从shape()扩展到shape()。在这种情况下,您可以将if else块放在some_load_函数定义中(编辑了我的答案)。我遗漏了很多,因为我不知道你的函数是什么样子的。梅森的回答也应该有效。