【发布时间】:2018-03-10 00:21:10
【问题描述】:
我有两个矩阵:在“matrix”中有 0 和 1。在“matrix_2”中,我想对单个单元格周围的单元格求和。 例如:
matrix =
[[0 0 0 0 0 1 1 0 0 0]
[0 0 0 0 0 1 1 0 0 0]
[1 1 1 0 1 1 0 1 0 0]
[0 0 1 1 1 1 0 1 0 0]
[0 0 1 1 1 1 1 0 0 0]
[0 0 0 0 1 0 0 0 0 0]]
和
matrix_2 =
[[0 0 0 0 0 4 4 0 0 0]
[0 0 0 0 0 6 6 0 0 0]
[2 4 4 0 6 6 0 3 0 0]
[0 0 6 8 8 7 0 3 0 0]
[0 0 4 7 7 6 4 0 0 0]
[0 0 0 0 4 0 0 0 0 0]]
在这种情况下,matrix_2 计算单元格和紧邻单元格的总和。
matrix_2 = np.zeros((y_segment, x_segment), dtype=int)
for y_matrix in xrange(0, y_segment, 1):
for x_matrix in xrange(0, x_segment, 1):
if matrix[y_matrix][x_matrix] != 0:
if 0 < x_matrix < x_segment - 1 and 0 < y_matrix < y_segment - 1:
# print "y_matrix: " + str(y_matrix) + ", x_matrix: " + str(x_matrix)
matrix_2[y_matrix][x_matrix] = matrix[y_matrix][x_matrix] + matrix[y_matrix-1][x_matrix] + \
matrix[y_matrix-1][x_matrix-1] + matrix[y_matrix-1][x_matrix+1] + \
matrix[y_matrix+1][x_matrix-1] + matrix[y_matrix+1][x_matrix] + \
matrix[y_matrix+1][x_matrix+1] + matrix[y_matrix][x_matrix-1] + \
matrix[y_matrix][x_matrix+1]
if x_matrix == 0 and y_matrix == 0: # 1
matrix_2[y_matrix][x_matrix] = matrix[y_matrix][x_matrix] + matrix[y_matrix][x_matrix+1] + \
matrix[y_matrix+1][x_matrix+1] + matrix[y_matrix+1][x_matrix]
if x_matrix == 0 and y_matrix == y_segment-1: # 10
matrix_2[y_matrix][x_matrix] = matrix[y_matrix][x_matrix] + matrix[y_matrix - 1][x_matrix] + \
matrix[y_matrix - 1][x_matrix + 1] + matrix[y_matrix][x_matrix + 1]
if x_matrix == x_segment-1 and y_matrix == y_segment-1: # 12
matrix_2[y_matrix][x_matrix] = matrix[y_matrix][x_matrix] + matrix[y_matrix - 1][x_matrix] + \
matrix[y_matrix][x_matrix - 1] + matrix[y_matrix - 1][x_matrix - 1]
if x_matrix == x_segment-1 and y_matrix == 0: # 3
matrix_2[y_matrix][x_matrix] = matrix[y_matrix][x_matrix] + matrix[y_matrix][x_matrix-1] + \
matrix[y_matrix + 1][x_matrix - 1] + matrix[y_matrix + 1][x_matrix]
if x_matrix == 0 and y_matrix != 0 and y_matrix != y_segment-1:
matrix_2[y_matrix][x_matrix] = matrix[y_matrix][x_matrix] + matrix[y_matrix-1][x_matrix] + \
matrix[y_matrix-1][x_matrix+1] + matrix[y_matrix+1][x_matrix] + \
matrix[y_matrix+1][x_matrix+1] + matrix[y_matrix][x_matrix+1]
if x_matrix == x_segment-1 and y_matrix != 0 and y_matrix != y_segment-1:
matrix_2[y_matrix][x_matrix] = matrix[y_matrix][x_matrix] + matrix[y_matrix - 1][x_matrix] + \
matrix[y_matrix - 1][x_matrix - 1] + matrix[y_matrix + 1][x_matrix] + \
matrix[y_matrix + 1][x_matrix - 1] + matrix[y_matrix][x_matrix - 1]
if y_matrix == 0 and x_matrix != 0 and x_matrix != x_segment-1:
matrix_2[y_matrix][x_matrix] = matrix[y_matrix][x_matrix] + matrix[y_matrix][x_matrix + 1] + \
matrix[y_matrix][x_matrix - 1] + matrix[y_matrix + 1][x_matrix] + \
matrix[y_matrix + 1][x_matrix + 1] + matrix[y_matrix + 1][x_matrix - 1]
if y_matrix == y_segment-1 and x_matrix != 0 and x_matrix != x_segment-1:
matrix_2[y_matrix][x_matrix] = matrix[y_matrix][x_matrix] + matrix[y_matrix][x_matrix + 1] + \
matrix[y_matrix][x_matrix - 1] + matrix[y_matrix - 1][x_matrix] + \
matrix[y_matrix - 1][x_matrix + 1] + matrix[y_matrix - 1][x_matrix - 1]
但是知道我想计算我的单元格周围 9x9 单元格的总和。 有这个功能吗?因为可以肯定我的代码写得不好,而且会很长。谢谢。
【问题讨论】:
-
您说您也想计算 10x10 单元格的总和,但这难道仅对奇数内核大小有意义吗?否则你会得到一个不对称的内核
-
@MaartenFabré 抱歉,我为未来的读者编辑