Chinaunix
标题: 二维数组问题 [打印本页]
作者: huanghaoyang199 时间: 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)].想了三天了还是想不出来,求各位大佬出手!
作者: huanghaoyang199 时间: 2018-03-24 13:31
会的私信我,红包多多的!
作者: dahe_1984 时间: 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[i
i+x_b), j
j+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)
作者: dahe_1984 时间: 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
作者: dahe_1984 时间: 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
作者: dahe_1984 时间: 2018-03-25 12:04
具体怎么循环你在自己看吧。
作者: dahe_1984 时间: 2018-03-25 12:50
本帖最后由 dahe_1984 于 2018-03-25 13:52 编辑
- import numpy as np
- import math
- a=np.random.randint(0,2,size=[20,20])
- print(a)
- x_a, y_a = a.shape
- 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
- 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[i:(i+x_b), j:(j+y_b)]
- if((c.shape == b.shape) and ((c == b).all())):
- #print(c,'\n', b)
- number = number + 1
- return (number, x_b)
- min_value = min(x_a, y_a)
- for i in range(2, min_value):
- b = oneTriangle([i, i])
- #print(b)
- number = subsearch(a, b)
- print(number)
复制代码
欢迎光临 Chinaunix (http://bbs.chinaunix.net/) |
Powered by Discuz! X3.2 |