如何从函数创建ndarrays



我目前正在使用keras API编写一个神经网络。因此,我构建的数据具有与MNIST训练数据集类似的输入数据结构。它是一个元组,由两个具有形状(60000,28,28(和(60000,(的numpy ndarray组成

我想从我自己的两个数据集中提取10个随机样本,这些数据集表示X_train和Y_train数据。两者之间的联系由两个定义来描述。这是有效的,并将样本返回为具有所需形状的numpy数组。

我的问题是,我不知道如何有效地(在不迭代的情况下(组合这些数据集,使得具有形状(10,20,5(的X_train数据集和具有形状(10,2,10(的Y_train数据集中可以组合为元组(X_train,Y_train(。我把错误信息放在代码中。我不明白为什么我不能用序列设置数组元素;据我所知,它与MNIST数据集相当。有人能向我解释一下什么是不同的,以及我应该做些什么来创建所需的元组(或者给出一个更好的选项(吗?

我尝试过np.from函数和使用列表理解,但我认为这些不适用。如果不是这样的话,我很想听听。

SAMPLES = 10

class PrepareTestData:
def randomSamples():
sample = random.randint(0,1000)
return sample
def inputData(samples):
print(samples)
inputdata = np.random.rand(20, 5)
print(type(inputdata))
return inputdata
def outputData(samples):
print(samples)
outputdata = np.random.rand(2, 10)
return outputdata
def mainTest():
inputArraySample = np.zeros(SAMPLES,)
outputArraySample = np.zeros(SAMPLES,)
for i in range(0, SAMPLES):
random_sample = PrepareTestData.randomSamples()        
inputArraySample[i] = PrepareTestData.inputData(random_sample)
*ERROR: setting an array element with a sequence.*
outputArraySample[i] = PrepareTestData.inputData(random_sample)
final_array = np.core.records.fromarrays(inputArraySample, outputArraySample) 

mainTest()

我不知道有什么方法可以理解numpy列表。我发现有,这是我自己问题的答案:

def mainTest():
random_samples = np.array([PrepareTestData.randomSamples() for x in range(SAMPLES)])
inputArraySample = np.array([PrepareTestData.inputData(samples ) for samples in random_samples ])
outputArraySample = np.array([PrepareTestData.outputData(samples  ) for samples in random_samples ])
(x_train, Y_train) = (inputArraySample, outputArraySample)

最新更新