微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在python中加入像拼图这样的矩阵

如何解决如何在python中加入像拼图这样的矩阵

我将三个拼图定义为多个 7x7 的数组,如下所示:

R3LRU = pd.DataFrame([
    [1,1,1],[1,1]
])

我试图按照以下规则加入它们:1111111 可以与 1000001 连接,1000001 可以与 1000001 连接,但 1111111 不能与 1111111 连接。更好的说明如下:

enter image description here

我曾尝试使用 pd.concat 函数,但它只是将它们粘合在一起而不是并排连接,如下所示:

enter image description here

或者,在代码输出方面,像这样:

   0  1  2  3  4  5  6  0  1  2  3  4  5  6  0  1  2  3  4  5  6
0  1  1  1  1  1  1  1  1  0  0  0  0  0  1  1  1  1  1  1  1  1
1  1  0  0  0  0  0  1  1  0  0  0  0  0  1  1  0  0  0  0  0  0
2  1  0  0  0  0  0  1  1  0  0  0  0  0  1  1  0  0  0  0  0  0
3  1  0  0  0  0  0  1  1  0  0  0  0  0  1  1  0  0  0  0  0  0
4  1  0  0  0  0  0  1  1  0  0  0  0  0  1  1  0  0  0  0  0  0
5  1  0  0  0  0  0  1  1  0  0  0  0  0  1  1  0  0  0  0  0  0
6  1  0  0  0  0  0  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1

我想我想按第 6 列和第 0 列或第 6 行和第 0 行加入

我如何定义“加入”边,以便通过提议的规则将各部分加入?

解决方法

如果最后一列和第一列匹配,然后“重叠”这两个部分,我认为您想连接。我不认为,pandas 很适合解决这个问题,因为您只需要值,不需要列或基本上可以使用 pandas 的任何功能。

我会推荐简单的 numpy 数组。然后你可以做类似的事情

In [1]: import numpy as np

In [2]: R3LRU = np.array([
   ...:     [1,1,1],...:     [1,1]
   ...: ])

In [3]: R3LRU
Out[3]: 
array([[1,[1,1]])

获取第一部分的最后一列和第二部分的第一列

In [4]: R3LRU[:,0]
Out[4]: array([1,1])

In [5]: R3LRU[:,-1]
Out[5]: array([1,1])

比较它们

In [6]: R3LRU[:,0] == R3LRU[:,-1]
Out[6]: array([ True,True,True])

In [7]: np.all(R3LRU[:,-1])
Out[7]: True

如果相等,合并它们

In [8]: if np.all(R3LRU[:,-1]):
   ...:     combined = np.hstack([R3LRU[:,:-1],R3LRU])

In [9]: combined
Out[9]: 
array([[1,1]])

也许您的规则比简单的 == 比较复杂一点,但是您可以使 if 语句更复杂以反映您拥有的所有规则;)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。