我有多个二维数组,例如:

A = [[-1, -1, 0, 1, -1], [1, 1, 0, -1, -1], [-1, -1, -1, -1, -1], [-1, 1, -1, -1, 0]]
B = [[-1, -1, 0, 1, -1], [1, -1, 0, -1, -1], [0, 1, -1, 1, -1], [-1, 1, -1, -1, -1]]
C = [[0, -1, 0, 1, -1], [1, -1, 0, -1, -1], [0, 1, -1, 1, -1], [-1, 1, -1, -1, -1]]
D = [[-1, -1, 0, 1, 0], [0, 0, -1, 0, 1], [0, 1, -1, 1, -1], [-1, 1, -1, -1, -1]]

我需要找到most frequent value across each respective coordinate,以便输出如下:

E = [[-1 -1 0 1 -1],[1 -1 0 -1 -1],[0 1 -1 1 -1],[-1 1 -1 -1 -1]]

我当然可以遍历这些数组中的每一个,但我正在寻找一种矢量化的方法.这些元件的数量大约为10-11个,数组尺寸大约为900X900.

是否可以使用列表理解来解决此问题?

推荐答案

使用列表理解会有点麻烦.

基本上,您必须使用嵌套的子列表理解,并且数组的大小必须相同才能工作.

要使用矩阵,它只需要1个嵌套列表,但当我们使用矩数组表时,它将是三维的,因此需要2个嵌套子对象.

我使用的import mode个值是最主要的值.

from statistics import mode


A = [[-1, -1, 0, 1, -1], [1, 1, 0, -1, -1], [-1, -1, -1, -1, -1], [-1, 1, -1, -1, 0]]
B = [[-1, -1, 0, 1, -1], [1, -1, 0, -1, -1], [0, 1, -1, 1, -1], [-1, 1, -1, -1, -1]]
C = [[0, -1, 0, 1, -1], [1, -1, 0, -1, -1], [0, 1, -1, 1, -1], [-1, 1, -1, -1, -1]]
D = [[-1, -1, 0, 1, 0], [0, 0, -1, 0, 1], [0, 1, -1, 1, -1], [-1, 1, -1, -1, -1]]

matrixes = [A, B, C, D]

result = [[mode([x[k][j] for x in matrixes]) for j in range(len(matrixes[0][0]))] for k in range(len([x[0][0] for x in matrixes]))]


print(result)

结果:

[[-1, -1, 0, 1, -1], [1, -1, 0, -1, -1], [0, 1, -1, 1, -1], [-1, 1, -1, -1, -1]]

Python相关问答推荐

在有限数量的唯一字母的长字符串中,找到包含重复不超过k次的所有唯一字母的最长子字符串

在for循环中保存和删除收件箱

重命名变量并使用载体中的字符串存储 Select 该变量

Django文件上传不起作用:文件未出现在媒体目录或数据库中

每个组每第n行就有Pandas

当测试字符串100%包含查询字符串时,为什么t fuzzywuzzy s Process.extractBests不给出100%分数?

如何在Power Query中按名称和时间总和进行分组

使用from_pandas将GeDataFrame转换为polars失败,ArrowType错误:未传递numpy. dype对象

Pandas :多索引组

用gekko解决的ADE方程系统突然不再工作,错误消息异常:@错误:模型文件未找到.& &

运行回文查找器代码时发生错误:[类型错误:builtin_index_or_system对象不可订阅]

Pandas 在最近的日期合并,考虑到破产

如何删除索引过go 的lexsort深度可能会影响性能?' &>

类型错误:输入类型不支持ufuncisnan-在执行Mann-Whitney U测试时[SOLVED]

_repr_html_实现自定义__getattr_时未显示

按列分区,按另一列排序

更改键盘按钮进入'

如何在UserSerializer中添加显式字段?

有没有一种ONE—LINER的方法给一个框架的每一行一个由整数和字符串组成的唯一id?

Pandas:填充行并删除重复项,但保留不同的值