# 数组点乘,行×在前,列×在后,A·B = A行×B列
import numpy as np
x = np.array([[1., 2., 3.],
[4., 5., 6.]])
y = np.array([[6., 23.],
[-1, 7],
[8, 9]])
# print('x.dot(y)', '\n', x.dot(y)) # x·y = x行 · y列,获得2x2矩阵数组
# x.dot(y)
# [[ 28. 64.]
# [ 67. 181.]]
# print('y.dot(x)', '\n', y.dot(x)) # y·x = y行·x列 获得3x3矩阵
# [[ 98. 127. 156.]
# [ 27. 33. 39.]
# [ 44. 61. 78.]]
# np.dot(x, y)
# [[ 28. 64.]
# [ 67. 181.]]
# np.dot(y, x)
# [[ 98. 127. 156.]
# [ 27. 33. 39.]
# [ 44. 61. 78.]]
# ====================================
# 2维数组·一维数组,结果是一个一维数组
# print('\n', np.dot(x, np.ones(3)))
# [6. 15.]
# ————————
# print('\n', x@np.ones(3)) # @可作为中缀符号
# [6. 15.]
from numpy.linalg import inv, qr
x_1 = np.random.randn(5, 4)
# print(x_1)
mat = x_1.T.dot(x_1) # x_1.T是4行5列的矩阵,x_1是5行4列的矩阵
# print(mat) # 最终获得4x4矩阵,不一定奇异(奇异矩阵行列式为0)
# 矩阵求逆
# ①
mat_inv = np.linalg.inv(mat)
# print(mat_inv)
#② 效果一致
# print(inv(mat))
# print(mat.dot(inv(mat)))
# 假设你的矩阵是一个名为matrix的NumPy数组
import numpy as np
# 将所有数字限制为4位有效数字
formatted_matrix = np.array2string(mat.dot(inv(mat)), precision=4, suppress_small=True)
# print(formatted_matrix)
# 获取程序运行所需的时间
import time
from random import normalvariate
N = 10000000
start_time = time.time() # 运行该行代码的时间点
samples = [normalvariate(0,1) for _ in range(N+1)] # 这个是主程序
end_time = time.time() # 运行该行代码的时间点
execution_time = end_time-start_time
print(f'Execution time:{execution_time} seconds') # 以秒为单位
numpy线性代数 & time()函数
最新推荐文章于 2024-09-06 10:18:26 发布