numpy线性代数 & time()函数

# 数组点乘,行×在前,列×在后,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')   # 以秒为单位

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值