免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3333 | 回复: 6
打印 上一主题 下一主题

二维数组问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2018-03-24 13:31 |只看该作者 |倒序浏览
目前有随机的正方形矩阵,元素只有数字0和1,若出现由1组成三角形需将其尺寸和数量print。比如:              
       1
1     1    1 尺寸为2(遍历几行出现size就是几)
                                                 1
                                            1    1   1   
                                        1   1   1    1   1尺寸为3
这些大小不同三角形潜藏在0,1随机矩阵中,求各种size的数量,
并print为(size,amount)有多少种size全部列出
例如  1     1      1       1     1
          0     1      1      1    1
           1      1     1     1    1
           1     1    1     1      1
这个矩阵print为[(2,,(3,2)].想了三天了还是想不出来,求各位大佬出手!

论坛徽章:
0
2 [报告]
发表于 2018-03-24 13:31 |只看该作者
会的私信我,红包多多的!

论坛徽章:
0
3 [报告]
发表于 2018-03-25 12:02 |只看该作者
import numpy as np

a=np.random.randint(0,2,size=[10,10])
print(a)

def oneTriangle(list):
    tri=np.ones(list,dtype=int)
    tri_upper_no_diag=np.triu(tri,k=1)[::-1]
    tri_lower_no_diag=np.tril(tri,k=0)

    a=np.concatenate((tri_upper_no_diag,tri_lower_no_diag),axis=1)

    b=np.delete(a,0,axis=1)

    return b

list=[2,2]
b = oneTriangle(list)

def subsearch(a, b):
    number = 0
    x_b, y_b = b.shape

    for i in range(0,a.shape[0]):
        for j in range(0,a.shape[1]):
            #print(i,j)
            c = a[ii+x_b), jj+y_b)]
            if((c.shape == b.shape) and ((c == b).all())):
                print(c,'\n', b)
                number = number + 1
    return number

number = subsearch(a, b)
print(number)

论坛徽章:
0
4 [报告]
发表于 2018-03-25 12:02 |只看该作者
[[1 0 0 1 1 1 0 0 0 0]
[0 0 0 1 1 0 1 1 1 0]
[0 1 1 1 0 1 1 1 1 0]
[1 0 1 0 1 0 1 0 0 0]
[0 0 0 0 1 0 0 0 1 0]
[0 1 1 0 1 0 0 1 0 0]
[0 1 0 1 0 1 1 1 0 0]
[1 0 1 1 0 0 1 0 0 0]
[1 0 1 0 1 0 0 0 0 1]
[0 1 0 1 1 1 1 1 1 0]]
[[0 1 0]
[1 1 1]]
[[0 1 0]
[1 1 1]]
1

论坛徽章:
0
5 [报告]
发表于 2018-03-25 12:03 |只看该作者
[[0 0 1 0 1 0 1 1 1 1 0 0 1 1 1 1 0 1 1 1]
[0 1 0 1 1 1 1 1 1 1 1 0 0 0 1 0 0 1 0 1]
[1 1 0 0 0 1 1 1 1 0 0 0 1 0 0 1 0 1 0 1]
[1 1 1 1 1 0 1 1 1 1 1 0 0 1 1 0 0 0 1 1]
[0 0 0 0 1 1 0 1 0 1 1 1 1 1 0 0 1 1 1 0]
[1 1 0 1 0 0 1 1 1 1 0 1 0 1 0 0 1 1 0 0]
[0 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0]
[0 0 1 1 1 1 0 0 1 1 1 0 1 1 1 0 1 0 0 0]
[1 0 1 0 0 1 1 1 0 0 0 1 0 1 1 0 1 1 0 0]
[1 1 0 1 0 1 0 1 0 0 1 0 1 0 0 0 0 1 1 1]
[1 0 0 0 0 0 0 1 0 1 1 1 1 0 1 0 0 1 1 0]
[0 0 1 0 1 1 0 1 1 1 1 1 1 0 1 1 0 1 1 1]
[1 0 1 1 0 0 1 0 1 0 0 1 1 1 0 1 0 1 1 1]
[0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 1 1 0 0 1]
[1 1 0 0 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 0]
[1 0 1 1 1 1 1 0 1 1 1 0 0 1 1 0 0 1 0 1]
[1 1 1 0 0 0 1 1 1 0 0 0 0 0 0 1 0 1 1 0]
[0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 1 0 1 0]
[1 0 0 1 0 0 1 0 0 0 1 0 0 1 1 0 1 1 1 0]
[0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 1 1 1 1]]
[[0 1 0]
[1 1 1]]
[[0 1 0]
[1 1 1]]
[[0 1 0]
[1 1 1]]
[[0 1 0]
[1 1 1]]
[[0 1 0]
[1 1 1]]
[[0 1 0]
[1 1 1]]
[[0 1 0]
[1 1 1]]
[[0 1 0]
[1 1 1]]
[[0 1 0]
[1 1 1]]
[[0 1 0]
[1 1 1]]
5

论坛徽章:
0
6 [报告]
发表于 2018-03-25 12:04 |只看该作者
具体怎么循环你在自己看吧。

论坛徽章:
0
7 [报告]
发表于 2018-03-25 12:50 |只看该作者
本帖最后由 dahe_1984 于 2018-03-25 13:52 编辑
  1. import numpy as np
  2. import math

  3. a=np.random.randint(0,2,size=[20,20])
  4. print(a)
  5. x_a, y_a = a.shape

  6. def oneTriangle(list):
  7.     tri=np.ones(list,dtype=int)
  8.     tri_upper_no_diag=np.triu(tri,k=1)[::-1]
  9.     tri_lower_no_diag=np.tril(tri,k=0)

  10.     a=np.concatenate((tri_upper_no_diag,tri_lower_no_diag),axis=1)

  11.     b=np.delete(a,0,axis=1)

  12.     return b

  13. def subsearch(a, b):
  14.     number = 0
  15.     x_b, y_b = b.shape

  16.     for i in range(0,a.shape[0]):
  17.         for j in range(0,a.shape[1]):
  18.             #print(i,j)
  19.             c = a[i:(i+x_b), j:(j+y_b)]
  20.             if((c.shape == b.shape) and ((c == b).all())):
  21.                 #print(c,'\n', b)
  22.                 number = number + 1
  23.     return (number, x_b)

  24. min_value = min(x_a, y_a)
  25. for i in range(2, min_value):
  26.     b = oneTriangle([i, i])
  27.     #print(b)
  28.     number = subsearch(a, b)
  29.     print(number)
复制代码

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP