python - 如何批量拆分numpy数组?

标签 python numpy

听起来很容易,不是我不知道该怎么做。

我有numpy的2d数组

X = (1783,30)

我想将它们分成64个批次。我编写这样的代码。
batches = abs(len(X) / BATCH_SIZE ) + 1  // It gives 28

我正在尝试对结果进行批处理预测。所以我用零填充批次,并用预测结果覆盖它们。
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 net.params.items()]
 net.set_input_arrays(data4D.astype(np.float32),data4DL.astype(np.float32))
 pred = net.forward()
 print 'batch ', b
 predicted.append(pred['ip1'])

print 'Total in Batches ', data4D.shape, batches
print 'Final Output: ', predicted

但在最后一批28中,只有55个元素,而不是64个(元素总数1783),它给出了
ValueError: could not broadcast input array from shape (55,1,96,96) into shape (64,1,96,96)
解决此问题的方法是什么?

PS:网络预测程序需要准确的批处理大小为64才能进行预测。

最佳答案

我也不太了解您的问题,尤其是X的外观。
如果要创建数组大小相等的子组,请尝试以下操作:

def group_list(l, group_size):
    """
    :param l:           list
    :param group_size:  size of each group
    :return:            Yields successive group-sized lists from l.
    """
    for i in xrange(0, len(l), group_size):
        yield l[i:i+group_size]

关于python - 如何批量拆分numpy数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28507052/

相关文章:

python - 安装包后仍然出现"No module named xxx"

Python CGI os.system 导致 header 格式错误

python - 将 numpy.fill 与 Numba 'nopython' 模式结合使用

python - 在Python的Matplotlib中,如何让薄图像与主图像边框?

python - 如何使用python访问json中的元素?

python - 如何将没有空格的文本拆分为单词列表

java - AES Java 到 Python

python - 在python中打开二进制数据

python - numpy.ndarray 的类型提示/注释 (PEP 484)

python - 将加法矢量化到由另一个数组索引的数组中