2016-02-13 89 views
-2

我需要根據另一個數組上的條件來減小數組的大小;我需要研究這些關係,並根據新信息改變價值。這是我的問題的簡化版本。基於python中的多列條件減小數組的大小

我有一個與數據的數組(或數據幀):

data = np.array([[[[1, 2, 3, 4], [5, 6, 7, 8]]]]).reshape((4,2)) 

我有另一個文件中,不同大小的,其保持關於該數據陣列中的值的信息:

a = np.array([[1, 1, 2],[2, 3, 4],[3, 5, 6], [4, 7, 8] ]).reshape((4,3)) 

我在a的信息告訴我如何減小數據的大小,例如a[0]告訴我,data[0][0:2] == a[0][1:]

,所以我可以取代的獨特價值a[0][0:1]data[0][0:2](有效地降低陣列數據

爲了澄清的大小,陣列的保持每個位置三條信息,一個[0]具有信息1,1, 2 - 現在我想掃描數據數組,當a [i] [1:]等於數據[i] [0:2]或數據[i] [2:]中的任何一個時,我想要與A [1]替換的值[0:1] - 是任何更清楚

我的陣列天線的最終應該是這樣的:

new_format = np.array([[[[1, 2], [3,4]]]]).reshape((2,2)) 
01?

存在以下問題:Filtering a DataFrame based on multiple column criteria 但是僅基於基於特定數字標準的過濾。

+1

我無法進一步瞭解不是「我在'的信息了'告訴我如何我可以減少數據的大小'。它究竟如何告訴你這個?我真的不明白 –

回答

0

我想出了一個方法來做到這一點,使用熊貓圖書館。可能不是最好的解決方案,但從我的工作。 在我來說,我讀的大熊貓庫中的數據,但對於發佈的例子,我可以在陣列轉換爲dataframes

datas = pd.DataFrame(data) ##convert to dataframe 
az = pd.DataFrame(a) 
datas= datas.rename(columns={'0': '1', '1': '2'}) ## rename columns for comparison with a array 
new_format= pd.merge(datas, az, how='right') #do the comparison 

new_format = new_format.drop(['1','2'],1) #drop the old columns, keeping only the new format