Python刷题——第6周

这周刷题情况:
Python刷题——第6周_第1张图片
知识点:

关于矩阵

生成方法

1)直接用列表

m,n = map(int,input().split())
matrix = [[0]*m for i in range(n)]

2)采用numpy生成想要维度的矩阵

import numpy as np
x,y = map(int,input().split())
a = np.ones((x+1,y+1))

并且可以根据相应位置改元素

import numpy as np
x,y = map(int,input().split())
a = np.ones((x+1,y+1))
a[1][1] = 9      //在(11)的位置讲元素1改为9
print(a)

计算方法
1)元素求和(对于数组)
假如矩阵A是n*n的矩阵

A.sum()是计算矩阵A的每一个元素之和。

A.sum(axis=0)是计算矩阵每一列元素相加之和。

A.Sum(axis=1)是计算矩阵的每一行元素相加之和。

2)乘法
矩阵对应元素相乘

a1=mat([1,1]);
a2=mat([2,2]);
a3=multiply(a1,a2);
print(a3)

矩阵点乘

a1=mat([2,2]);
a2=a1*2;
print(a2)

矩阵与矩阵间的运算思路其实和一般的加减乘除差不多,只是有些地方语句要特殊申明。

主要功能与应用

矩阵中的元素查找思路也可以由数组查找的思路得出(用二维数组创建的矩阵就能直接用 Array语句

例如查找矩阵中元素的最大值:

>>> x = np.array([[1,2,3],[4,5,6]])
>>> x
array([[1, 2, 3],
       [4, 5, 6]])

>>> np.max(x)             # 查找数组最大值
6
>>> np.max(x, axis=0)     # 查找数组每列最大值
array([4, 5, 6])
>>> np.max(x, axis=1)     # 查找数组每行最大值
array([3, 6])

>>> np.argmax(x)     # 最大元素的索引
5

矩阵转置

1)数组情况

arr = [[ 1,  2,  3],
       [ 4,  5,  6],
       [ 7,  8,  9],
       [10, 11, 12]]

arr2 = []   # 数组的第二维维度
for i in range(len(arr[0])):
    temp = []   # 数组的第一维维度
    for j in range(len(arr)):
        temp.append(arr[j][i])
    arr2.append(temp)
print(arr2)
'''
# 输出结果为:
[[1, 4, 7, 10], [2, 5, 8, 11], [3, 6, 9, 12]]

2)用列表表达式

# python 列表表达式
# 使用嵌套的列表表达式
arr = [[ 1,  2,  3],
       [ 4,  5,  6],
       [ 7,  8,  9],
       [10, 11, 12]]
# i 为第二个维度,j 为第一个维度
arr2 = [[arr[j][i] for j in range(len(arr))] for i in range(len(arr[0]))]
print(arr2)
'''
# 输出结果为:
[[1, 4, 7, 10], [2, 5, 8, 11], [3, 6, 9, 12]]
'''

3)使用numpy模块

# 使用numpy转置
import numpy as np

arr = [[ 1,  2,  3],
       [ 4,  5,  6],
       [ 7,  8,  9],
       [10, 11, 12]]
arr = np.array(arr)

# 输出结果为:
[[ 1  4  7 10]
 [ 2  5  8 11]
 [ 3  6  9 12]]

你可能感兴趣的:(Python刷题——第6周)