我有一个任意长度的列表,我需要将它分成相同大小的块并对其进行操作.有一些明显的方法可以做到这一点,比如保留一个计数器和两个列表,当第二个列表填满时,将它添加到第一个列表并清空下一轮数据的第二个列表,但这可能非常昂贵.
我想知道是否有人对任何长度的列表都有一个很好的解决方案,例如使用生成器.
我一直在寻找有用的东西,itertools但我找不到任何明显有用的东西.但是可能会错过它.
这听起来很容易,但我不知道该怎么做。
我有 numpy 二维数组
X = (1783,30)
Run Code Online (Sandbox Code Playgroud)
我想将它们分成 64 个批次。我这样编写代码。
batches = abs(len(X) / BATCH_SIZE ) + 1 // It gives 28
Run Code Online (Sandbox Code Playgroud)
我正在尝试批量预测结果。所以我用零填充批次,并用预测结果覆盖它们。
predicted = []
for b in xrange(batches):
data4D = np.zeros([BATCH_SIZE,1,96,96]) #create 4D array, first value is batch_size, last number of inputs
data4DL = np.zeros([BATCH_SIZE,1,1,1]) # need to create 4D array as output, first value is batch_size, last number of outputs
data4D[0:BATCH_SIZE,:] = X[b*BATCH_SIZE:b*BATCH_SIZE+BATCH_SIZE,:] # fill value of input xtrain
#predict
#print [(k, v[0].data.shape) for k, v in …Run Code Online (Sandbox Code Playgroud) 之前只询问过这个问题的一部分([1] [2]),它解释了如何分割numpy数组.我是Python的新手.我有一个包含262144个项目的数组,并希望将它分成长度为512的小数组,单独对它们进行排序并总结它们的前五个值,但我不确定如何超出这一行:
np.array_split(vector, 512)
Run Code Online (Sandbox Code Playgroud)
如何调用和分析每个数组?继续使用numpy数组或者我应该还原并使用字典而不是它是个好主意吗?
我有一些非常大的二维numpy数组。一个数据集是55732 x 257659,超过140亿个元素。因为我需要执行throws MemoryError的一些操作,所以我想尝试将数组拆分为一定大小的块,然后将它们针对这些块运行。(我可以在每个片段上运行该操作之后汇总结果。)我的问题所在的事实MemoryErrors意味着,重要的是我可以以某种方式限制数组的大小,而不是将它们拆分为固定数量的片段。
例如,让我们生成一个1009 x 1009随机数组:
a = numpy.random.choice([1,2,3,4], (1009,1009))
Run Code Online (Sandbox Code Playgroud)
我的数据没有必要进行均分,并且绝对不能保证可以按我想要的大小进行分割。所以我选择1009是因为它是主要的。
还要说我希望它们以不大于50 x 50的块的形式出现。由于这只是为了避免极大数组的错误,因此如果结果不准确也可以。
如何将其拆分为所需的块?
我正在使用numpy 1.14.3(最新)的Python 3.6 64位。
我已经看到了使用的函数reshape,但是如果行数和列数未完全划分大小,则该函数将无效。
这个问题(以及其他类似问题)的答案解释了如何拆分为一定数量的块,但这并未说明如何拆分为一定的大小。
我也看到了这个问题,因为这实际上是我的确切问题。答案和评论建议切换到64位(我已经拥有)并使用numpy.memmap。都没有帮助。
假设我有一个清单 A
A = [1,2,3,4,5,6,7,8,9,10]
Run Code Online (Sandbox Code Playgroud)
我想B按以下顺序使用上述列表创建一个新列表(例如)。
B = [[1,2,3], [3,4,5], [5,6,7], [7,8,9], [9,10,]]
Run Code Online (Sandbox Code Playgroud)
即前三个数字为A[0,1,2],后三个数字为A[2,3,4],依此类推。
我相信其中有一种numpy用于此类操作的功能。