【问题标题】:Reduce size of array based on multiple column criteria in python基于python中的多列标准减小数组的大小
【发布时间】:2016-02-13 14:22:59
【问题描述】:

我需要根据在另一个数组上找到的标准来减小数组的大小;我需要研究关系并根据新信息更改值。这是我的问题的简化版本。

我的数据有一个数组(或数据框):

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:]

所以我可以用data[0][0:2]替换唯一值a[0][0:1](有效减少数组数据的大小

为了澄清,数组 a 每个位置包含三个信息,a[0] 包含信息 1、1、2 - 现在我想扫描数据数组,当 a[i][1:]等于 data[i][0:2] 或 data[i][2:] 中的任何一个,然后我想用 a[i][0:1] 替换该值 - 这更清楚吗?

我的最终数组应该是这样的:

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

有如下问题:Filtering a DataFrame based on multiple column criteria 但仅基于基于某些数值标准的过滤。

【问题讨论】:

  • 我无法理解“a 中的信息告诉我如何减少数据大小”。它究竟是如何告诉你的?我真的不明白

标签: python numpy


【解决方案1】:

我想出了一个方法,使用 pandas 库。可能不是最好的解决方案,但对我有用。 就我而言,我读取了 pandas 库中的数据,但对于发布的示例,我可以将数组转换为数据帧

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-19
    • 2015-03-14
    • 1970-01-01
    • 1970-01-01
    • 2013-04-05
    • 2019-06-11
    相关资源
    最近更新 更多