首页 > 解决方案 > 如何连接多维numpy数组中的单个维度

问题描述

lows = np.array([0 for lead in range(10)])

temp_lows = np.array([[1 for points in range(12)] for lead in range(10)]) # Ones are only a placeholder. temp_lows is filled with random int (data)

for lead in range(10):
    lows[lead] = np.concatenate((lows[lead], temp_lows[lead]), axis=None)

执行后返回:

ValueError:使用序列设置数组元素。

基本上我希望 lows 数组是大数组,我根据每次迭代的提前期添加较小的临时数组(此处未显示)。例如,在第 1 次迭代中,我希望将 temp_lows[0] 中的值添加到 lows[0],并将 temp_lows[1] 中的值添加到 lows[1],依此类推。现在的问题是,我似乎无法找到一种解决方案来在正确的维度上连续添加较小的数组。

编辑1:我的问题不准确。temp_lows 包含某个提前期的数据,我称之为“提前期”。现在,对于每次迭代,我希望我在此迭代中处理的数据 (temp_lows) 在正确的提前期添加到低点数组,以一种连续列表的方式。我将使用这些列表(前导 0 到 9)来生成 PDF 函数。

标签: pythonarraysnumpyconcatenationvalueerror

解决方案


使用这样的最终答案创建另一个数组可能更容易:

>>> newLows = np.concatenate((lows[:,np.newaxis], temp_lows), axis=1)
>>> newLows
array([[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]])

我不确定我是否完全遵循编辑的逻辑,也许一些实际数据和预期结果将有助于澄清它。与此同时,也许这更像你正在寻找的东西?

>>> newLows = np.array([np.concatenate((lows[lead], temp_lows[lead]), axis=None) for lead in range(10)])
...   
>>> newLows
array([[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]])

推荐阅读