2016-02-13 40 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