我有一个函数(getArray),它返回大小为(1,40)的Numpy数组,让我们说它返回:
[-0.385 -0.385 -0.405 -0.455 -0.485 -0.485 -0.425 -0.33  -0.22  -0.07   0.12   0.375  0.62   0.78   0.84   0.765  0.52   0.17  -0.165 -0.365 -0.435 -0.425 -0.37  -0.33  -0.325 -0.335 -0.345 -0.33  -0.325 -0.315 -0.31  -0.32 -0.335 -0.34  -0.325 -0.345 -0.335 -0.33  -0.335 -0.33 ]然后,在循环中,我需要创建包含getArray返回的多个数组的Numpy数组,例如,数组的大小可以是(2000,40)。怎样才是正确的方法呢?
如果在循环中创建Numpy数组,则需要在每次迭代中创建新数组,这不是我想要的。现在,我首先创建了Numpy数组的列表,然后从列表中创建了数组。它工作得很好,直到行数超过255。在该数组从2D更改为1D之后。
我还尝试使用v堆栈函数将行添加到数组中。当最终数组的大小为(255,40)时,这很好地工作。下面是我使用的代码:
A = numpy.empty((0,40), float)
for value in values:
    meas = getArray(value)
    A = numpy.vstack([A, meas])
print(A.shape)
print(A)如果有最多255行,则得到以下结果
(255, 40)
[[-0.385 -0.385 -0.405 ..., -0.33  -0.335 -0.33 ] [-0.425 -0.445 -0.475 ..., -0.375 -0.395 -0.41 ] [-0.41  -0.435 -0.465 ..., -0.4   -0.4   -0.415] ...,  [-0.47  -0.495 -0.495 ..., -0.425 -0.425 -0.43 ] [-0.5   -0.52  -0.57  ..., -0.455 -0.445 -0.435] [-0.515 -0.57  -0.62  ..., -0.39  -0.41  -0.385]]当有超过255行时,我得到以下错误
ValueError:除级联轴外的所有输入数组尺寸必须完全匹配
编辑:
以下工作:
array = numpy.empty((size,total_window_size))
for index, value in enumerate(values):
    meas = getArray(value)
    if meas.size == total_window_size:
        array[index] = meas发布于 2017-09-06 10:40:11
如果您知道循环的迭代次数(例如,在for循环中),则可以在循环之前以适当的大小初始化数组,如下所示:
result = np.empty((nbIterations, 40))
for i in range(nbIterations):
    result[i] = getArray(parameters)getArray总是返回相同的值吗?如果是这样的话,您也可以使用
return = np.tile(getArray(), nbIterations).reshape((nbIterations, -1))来创建数组。
通常,将列表用于这类事情并不是一种很好的方法,因为它们往往比较慢:每当您在列表中追加一个项时,RAM中的列表结构就必须被修改,这需要很长的时间。因此,您应该使用numpy数组-
https://stackoverflow.com/questions/46072427
复制相似问题