Python:将 2D 数组与 1 个具有不同值的公共(public)列组合

标签 python arrays multiple-columns interpolation

我想组合两个代表一条曲线的数组,其中变量为第 1 列,但第 0 列值并不总是匹配:

import numpy as np
arr1= np.array([(12,1003),(17,900),(20,810)])
arr2= np.array([(10,1020),(17,902),(19,870),(21,750)])

我想将它们合并到一个数组中,其中第 0 列被组合在一起,并且两个第 1 列都堆叠有间隙,其中相应的第 0 列值没有值,如下所示:

arr3=np.array([((10,None,1020),(12,1003,None),(17,900,902),(19,None,870),(20,810,None),(21,None,750))])

这样做的原因是我希望能够获得每个数组第二列的平均值,但它们并不完全相同的第 0 列值,因此创建此数组的想法是然后进行插值以替换所有None 值,然后从第 1 列和第 2 列创建平均值,并用一个额外的列来表示该平均值。

到目前为止,我已经将 numPy 用于其他所有内容,但显然已经被 np.column_stack 函数困住了,因为它需要相同长度的列表,并且也无法根据 o 列中的值进行堆叠。最后,我不想为数据创建拟合,因为实际数据是非线性的并且可能不一致,因此拟合不起作用,插值似乎是最准确的方法。

可能已经有了答案,但由于我不知道如何很好地描述它,所以我找不到它。另外,我对 python 比较陌生,所以请不要对我的知识做出任何假设,除了它很少。

谢谢。

最佳答案

这有帮助吗?

import pandas
import numpy as np

arr1= np.array([(12,1003),(17,900),(20,810)])
arr2= np.array([(10,1020),(17,902),(19,870),(21,750)])

d1 = pandas.DataFrame(arr1)
d2 = pandas.DataFrame(arr2)

d1.columns = d2.columns  = ['t','v']
d3 =  pandas.DataFrame(np.array(d1.merge(d2, on='t',how='outer')))
print d3.values

# use d3.as_matrix() to convert to numpy array 

输出

[[   12.  1003.    nan]
 [   17.   900.   902.]
 [   20.   810.    nan]
 [   10.    nan  1020.]
 [   19.    nan   870.]
 [   21.    nan   750.]]

关于Python:将 2D 数组与 1 个具有不同值的公共(public)列组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46603247/

相关文章:

css - Bootstrap 列中的自动分页符

python - Pandas :如何将行中的一列旋转成列

python - 处理 django-import-export 中的外键导入

python - 试图从 URL 中提取 JSON 数据到 Jupyter 中?

c - 查找列表中重复的对数

javascript - 使用 lodash 或 underscore js 根据键集将数组转换为对象

Java:有什么类似于数组的数组列表吗?

html - 确保列以标题标记开头

python - scapy - 如何显示(编码十六进制)而不是 str

python - Twilio session 主持人和参与者姓名