簡體   English   中英

Python:將二維數組與具有不同值的 1 個公共列相結合

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM