关于矩阵
生成方法
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 //在(1,1)的位置讲元素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]]