为了账号安全,请及时绑定邮箱和手机立即绑定

将嵌套列表合并到列表元组列表中的组中

将嵌套列表合并到列表元组列表中的组中

米脂 2021-09-28 17:52:05
我有一个大小为 50000 的列表。说a。每个元素都是一个元组,比如b=a[0]。每个元组由 2 个列表组成,比如c=b[0], d=b[1]。第一个列表 iec的长度为 784,第二个 ied的长度为 10。从这个列表中,我需要提取以下内容:将 list 的前 10 个元素分组a。从这 10 个元组中,提取它们的第一个元素 ( c) 并将它们放入大小为 的矩阵中784x10。还要提取元组的第二个元素并将它们放入另一个 size 矩阵中10x10。对 list 中每批 10 个元素重复此操作a。这可以使用列表理解在一行中完成吗?还是我必须写多个 for 循环?哪种方法是有效和最好的?注意:如果我得到一个列表或 numpy.ndarray 矩阵也没关系。附加信息:我正在关注这个关于神经网络的教程,该教程旨在设计一个神经网络来识别手写数字。MNIST 数据库用于训练网络。训练数据采用上述格式。我需要为每个 mini_batch 创建一个 input_images 和 expected_output 矩阵。这是我试过的代码。我得到一个大小为 50000 的列表。它没有被拆分成 mini_batchesf = gzip.open('mnist.pkl.gz', 'rb')tr_d, va_d, te_d = pickle.load(f, encoding='latin1')f.close()training_inputs = [numpy.reshape(x, (784, 1)) for x in tr_d[0]]training_results = [vectorized_result(y) for y in tr_d[1]]training_data = zip(training_inputs, training_results)# training_data is a list of size 50000 as described aboven = len(training_data)  # n=50000mini_batch_size = 10mini_batch = [x[0] for k in range(0, n, mini_batch_size) for x in training_data[k:k+mini_batch_size]]将mnist.pkl.gz可在这里
查看完整描述

1 回答

?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

我在你添加来源之前写了我的答案,因此它纯粹是基于你用文字写出来的第一部分。因此,就输入大小的变化而言,它不是很安全。如果您在书中进一步阅读 Anders Nielsen 实际上提供了他自己的实现。


我的主要答案不是单行答案,因为这会混淆它的作用,我强烈建议您写出这样的复杂流程,以便您更好地了解实际发生的情况。在我的代码中,我创建了一个 firstMatrix,其中包含矩阵中的 c 元素,以及一个 secondMatrix,其中包含 d 元素。我对每批 10 个都这样做,但不知道之后你想用矩阵做什么,所以我只为每批制作它们。如果你想对它们进行分组或什么的,请说出来,我会尝试实现它。


for batch in np.array_split(a,10):

    firstMatrix = np.zeros(shape=(784,10))

    secondMatrix = np.zeros(shape=(10,10))

    for i in range(len(batch)):

        firstMatrix[:,i] = batch[i][0]

        secondMatrix[:,i] = batch[i][1]

如果你真的想要一个单行,这里有一个由 firstMatrices 组成的数组和一个为 secondMatrices 的数组:


firstMatrices = [np.array([batch[i][0] for i in range(len(batch))]).T for batch in np.array_split(a,10)]

secondMatrices = [np.array([batch[i][1] for i in range(len(batch))]).T for batch in np.array_split(a,10)]



查看完整回答
反对 回复 2021-09-28
  • 1 回答
  • 0 关注
  • 208 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号