[英]Python: Combining 2D arrays with 1 common column that has different values
我想組合兩個數組,它們表示變量為第 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.]]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.