Numpy数组比较(Python)



我想问一个关于下面numpy数组的问题。

我有一个数据集,它有50行和15列,我创建了一个numpy数组:

x=x.to_numpy()

我想比较彼此的行(除了本身),然后找到满足以下条件的行数:

没有其他行

-值都小于

-如果一个相等,另一个应该更小

Money Weight
10 80
20 70
30 90
25 50
35 10
40 60
50 10

for instance for row 1:没有其他的行在两列上都更小,如果一个在另一列上更小行1在另一列上更小。满足条件

for行3:没有其他行在两列上都更小,它在列权重上与第6行相等,但在货币维度上它更小。满足条件

for行6:没有别的行在两列上都比它小。它在重量维度上与第3行相等,但在金钱上的价值更大。不满足条件

我需要满足numpy数组条件的行数。

我已经尝试了一堆代码,机器人找不到合适的算法。如果有人有什么建议,我将不胜感激。

iuc,您可以执行以下操作:

mask = (arr <= arr[:, None]).all(2).sum(1) < 2
res = df[mask]
print(res)

Money  Weight
0     10      80
1     20      70
3     25      50
4     35      10

分解

# pairwise comparison between rows (elementwise)
comparison = (arr <= arr[:, None])
# reduce to find only rows that have all values lower
lower_values = comparison.all(2)
# count the number of rows with lower values
total_lower = lower_values.sum(1)
# leave only those that include one row (itself)
mask = total_lower <= 1
# filter the original DataFrame
res = df[mask]
print(res)

相关内容

  • 没有找到相关文章

最新更新