如何在 python 中打印具有特定图案的矩阵
How to print a matrix with a certain pattern in python
我们如何使用 Python 创建一个模式,这将创建一个方形矩阵,它将对角线元素的值设为零,更改对角线元素 29 以上的元素的值,并更改对角线以下元素的值等于 5.
例如:
Input: 4
Output:
0999
5099
5509
5550
请帮忙。谢谢
尝试使用 numpy
库。
import numpy as np
np.identity(4) # This will print out 1 on the diagnoals and 0 on the rest.
之后只需使用循环将所有 1(诊断)更改为 0
然后使用 if 语句和循环来识别数字是否大于 0
或者,如果您只想使用带有预定义列表的矩阵,则只需使用 np.array(list)
您需要检查 、对角线 (row_index == column_index)、上三角矩阵 (column_index > row_index) 和 [=17= 的条件] 矩阵 (row_index > column_index) 然后相应地添加值
def func(n):
l = []
for i in range(n):
tmp = []
for j in range(n):
if j==i:
tmp.append(0)
elif j>i:
tmp.append(9)
elif j<n:
tmp.append(5)
l.append(tmp)
return l
要搜索的关键词是“上三角”和“下三角”。完成后,我们可以像这样组成所需的输出:
import numpy as np
shape = (4, 4)
np.tril(np.full(shape, 5), -1) + np.triu(np.full(shape, 9), 1)
这是如何工作的:
np.full(shape, fill_value)
构造一个给定形状的数组,用给定的数字填充。
np.tril(m, k)
returns 矩阵 m
的下三角,从第 k
对角线开始(其余为零)。
- 类似地,
np.triu(m, k)
returns 矩阵 m
的上三角,从第 k
对角线开始(其余为零)。
如果只是打印的话,可以试试下面的
for i in range(n):
for j in range(n):
# diagonal case
if i == j:
print(0, end='')
# upper diagonal case
elif i < j:
print(9, end='')
# lower diagonal case
else:
print(5, end='')
print('')
我认为这应该可以解决问题
def pattern(size):
for i in range(size):
print('5'*i + '0' + '9'*(size-i-1))
pattern(4)
我们如何使用 Python 创建一个模式,这将创建一个方形矩阵,它将对角线元素的值设为零,更改对角线元素 29 以上的元素的值,并更改对角线以下元素的值等于 5.
例如:
Input: 4
Output:
0999
5099
5509
5550
请帮忙。谢谢
尝试使用 numpy
库。
import numpy as np
np.identity(4) # This will print out 1 on the diagnoals and 0 on the rest.
之后只需使用循环将所有 1(诊断)更改为 0 然后使用 if 语句和循环来识别数字是否大于 0
或者,如果您只想使用带有预定义列表的矩阵,则只需使用 np.array(list)
您需要检查 、对角线 (row_index == column_index)、上三角矩阵 (column_index > row_index) 和 [=17= 的条件] 矩阵 (row_index > column_index) 然后相应地添加值
def func(n):
l = []
for i in range(n):
tmp = []
for j in range(n):
if j==i:
tmp.append(0)
elif j>i:
tmp.append(9)
elif j<n:
tmp.append(5)
l.append(tmp)
return l
要搜索的关键词是“上三角”和“下三角”。完成后,我们可以像这样组成所需的输出:
import numpy as np
shape = (4, 4)
np.tril(np.full(shape, 5), -1) + np.triu(np.full(shape, 9), 1)
这是如何工作的:
np.full(shape, fill_value)
构造一个给定形状的数组,用给定的数字填充。np.tril(m, k)
returns 矩阵m
的下三角,从第k
对角线开始(其余为零)。- 类似地,
np.triu(m, k)
returns 矩阵m
的上三角,从第k
对角线开始(其余为零)。
如果只是打印的话,可以试试下面的
for i in range(n):
for j in range(n):
# diagonal case
if i == j:
print(0, end='')
# upper diagonal case
elif i < j:
print(9, end='')
# lower diagonal case
else:
print(5, end='')
print('')
我认为这应该可以解决问题
def pattern(size):
for i in range(size):
print('5'*i + '0' + '9'*(size-i-1))
pattern(4)