【发布时间】:2019-08-04 22:17:15
【问题描述】:
我有一个返回 numpy 数组的函数。我用不同的数据文件循环这个函数,但最终每个循环都会给出一个不同大小的数组(这是所需的输出),但我不知道如何正确附加这些数组。示例数组和我从文件中获取数据后用于排列它们的方法如下所示:
a1 = np.array([1,2,3])
a2 = np.vstack(a1)
# array([[1],
[2],
[3]])
b1 = np.array([4,5,6,7])
b2 = np.vstack(b2)
# array([[4],
[5],
[6],
[7]])
我有这两个数组,一个有 3 个元素,一个有 4 个元素。我想将它们垂直排列,使其看起来像这样以便导出:
1 4
2 5
3 6
7
我不希望用零或 Na 来填补数据中的空白,因为那样会做更多工作。
这需要适用于列宽为 2 的垂直数组,以使输出数据按如下方式组织:
1 2 5 6 10 11
2 3 6 7 11 12
3 4 7 8 12 13
8 9
所以第一个循环会产生这个垂直的 3,2 数组,而循环的第二次迭代会产生 4,2 数组,我想将 4,2 数组附加或连接到原始 3,2 数组和很快。这些数组组的宽度始终为 2,但长度会随着每组 2 的变化而变化。
我曾尝试使用基本的np.column_stack、np.concatenate 和np.append 函数,但它们没有奏效。这些可以是列表而不是 numpy 数组,如果这样可以更好地工作,或者甚至将输出的数据组织在数据框中就可以了。
======= 更新=======
更具体地说,在尝试了此处提供的一些解决方案之后,我会详细了解我的问题。 我的函数从数据文件中获取数据(工作正常),该文件返回 2 个相同维度的值的列表或数组(其中任何一个)(这里也没有问题)。
现在我正在尝试在遍历目录中的所有文件时执行此操作,并且我想将每个文件的这两个列表(或数组)附加/连接在一起,但它们的大小可能不同。当我尝试将它们垂直放在一起以产生输出数据的列时,问题就出现了。我还需要对循环中的值进行简单的数学运算,所以我认为它们可能需要是 numpy 数组(或类似的东西)而不是列表。
循环 #1 返回:
outdata1 = [0.0012, 0.0013, 0.00124, 0.00127]
outdata2 = [0.0016, 0.0014, 0.00134, 0.0013]
循环 #2 返回:
outdata1 = [0.00155, 0.00174, 0.0018]
outdata2 = [0.0019, 0.0020, 0.0021]
等等……
现在我需要对这些进行数学运算并将它们吐出到垂直组织的列数据中,而不切断任何数据。这可以通过将 Na 放入空间或使用数据框来完成,如果可行的话,我可以在导出之前更正这些空间。我希望它看起来像这样:
0.0012 0.0016 0.00155 0.0019
0.0013 0.0014 0.00174 0.0020
0.00124 0.00134 0.0018 0.0021
0.00127 0.0013
【问题讨论】:
-
Numpy 不处理ragged arrays,因此列表列表可能是更合适的方法。
标签: python arrays python-3.x numpy concatenation