鸢尾花书实践和知识记录[数学要素3-1万物皆数]

news2024/11/15 12:30:44

章节框图

文章目录

    • 本章用到的函数
    • 使用math库来打印出一些常用的值
    • 判断奇数偶数
    • 两数加减
    • 产生序列
    • 矩阵向量的表示:
    • 取数组矩阵元素的方法
    • streamlit的绘图
    • 矩阵的一般类型
    • 构造二维矩阵
    • 矩阵的加和运算

本章用到的函数

在这里插入图片描述

在这里插入图片描述

复数和自然数
在这里插入图片描述

使用math库来打印出一些常用的值

import math

# Print the value of pi
print ('pi = ', math.pi)

# Print the value of e
print ('e = ', math.e)

# Print the value of square root of 2
print ('sqrt(2) = ', math.sqrt(2))

事实上,这些值记录的是有限的

pi = 3.141592653589793
e = 2.718281828459045
sqrt(2) = 1.4142135623730951

代码2
打印圆周率、 2 \sqrt2 2 和自然常数 e,小数点后 1,000 位数字
Mpmath 是一个任意精度浮点运算库

from mpmath import mp
#设置小数点位数,保留几位有效数字,如果是1的话,就是整数,四舍五入
mp.dps = 1000+1

print('print 1000 digits of pi behind decimal point')
print(mp.pi)

print('print 1000 digits of e behind decimal point')
print(mp.e)

print('print 1000 digits of sqrt(2) behind decimal point')
print(mp.sqrt(2))

判断奇数偶数

num = float(input("Enter a number: "))
#判断是否为整数
if num.is_integer():

    if (num % 2) == 0:
       print("{0} is even ".format(int(num)))
    else:
       print("{0} is odd ".format(int(num)))

else:
    print("{0} is not an integer ".format(num))

两数加减

num1 = 2
num2 = 3

# add two numbers
sum = num1 + num2

# display the computation
print('The sum of {0} and {1} is {2}'.format(num1, num2, sum))
#两数之差
num1 = 5
num2 = 3

# add two numbers
diff = num1 - num2

# display the computation
print('The difference of {0} and {1} is {2}'.format(num1, num2, diff))



#输入数字
num1 = input('Enter first number: ')
num2 = input('Enter second number: ')

# add two numbers
sum = float(num1) + float(num2)

# display the computation
print('The sum of {0} and {1} is {2}'.format(num1, num2, sum))

产生序列

import numpy as np
#1到10,产生10个数字
a_i = np.linspace(1,10,10)
print(a_i)
#计算累加
a_i_cumsum = np.cumsum(a_i)
print(a_i_cumsum)

[ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.]
[ 1. 3. 6. 10. 15. 21. 28. 36. 45. 55.]

矩阵向量的表示:

向量的声明和向量的转置

#括号的差异
import numpy as np

# row vector transposed to a column vector
a_row = np.array([[1, 2, 3]])
#1*3
b = a_row.T

b_col = np.array([[1],[2],[3]])
b_col.shape
#3*1
a = b_col.T

取数组矩阵元素的方法

A = np.array([[1, 2, 3],
              [4, 5, 6]])
#所有行,第零列
#保存成行
A_first_col = A[:,0] # saved as one dimension row
#保存成列
#因为列表表示取多个元素,所以即使取一列,也会以二维的形式取出
A_first_col_V2 = A[:,[0]] # saved as a column

A_first_second_col_V2 = A[:,[0,1]] # extract first and second columns

A_first_third_col_V2 = A[:,[0,2]] # extract first and third columns

A_first_row = A[[0],:] # extract first row

A_second_row = A[[1],:] # extract second row

A_second_row_first_col = A[[1],[0]] # i = 2, j = 1

streamlit的绘图

使用

streamlit run Streamlit_Bk3_Ch1_02.py

来运行下面的文件
在这里插入图片描述

from mpmath import mp
import streamlit as st
import numpy as np
import matplotlib.pyplot as plt

with st.sidebar:
    #应用程序侧边栏
    
    #在侧边栏中创建一个滑块,允许用户选择要计算的 π 的小数位数。用户可以选择从 10,000 到 100,000 位,以 10,000 位为步长。
    num_digits = st.slider('Number of decimal digits:',
                           min_value = 10000, 
                           max_value = 100000,
                           step = 10000)
#  mp.dps = num_digits + 2:将 mpmath 库中的小数位数(精度)设置为用户选择的位数加上 2 位(以避免舍入错误)。
mp.dps = num_digits + 2
#pi_digits = mp.pi:计算指定位数的 π。
pi_digits = mp.pi
# st.write(str(pi_digits))
#只保留小数部分
pi_digits = str(pi_digits)[2:]
#转为整数列表
pi_digits_list = [int(x) for x in pi_digits]
# st.write(pi_digits_list)
#转为array数组
pi_digits_array = np.array(pi_digits_list)
#统计数组中每个数字(0-9)出现的次数
counts = np.bincount(pi_digits_array)

#6.创建水平条形图:
fig, ax = plt.subplots()
#绘制水平条形图,x 轴表示每个数字的计数,y 轴表示数字 0-9。条形有浅灰色边缘。
ax.barh(range(10), counts, align = 'center',
        edgecolor = [0.6, 0.6, 0.6])
#隐藏图表的顶部边框和右侧框
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)

ax.set_xlabel('Count')
ax.set_ylabel('Digit, 0~9')
plt.yticks(range(10))

st.pyplot(fig)

在这里插入图片描述
这个图也比较好看,尝试画一下.
1024位,也就是说,需要一个[32,32]的数组来存储。

from mpmath import mp
import streamlit as st
import numpy as np
import math as m

import matplotlib.pyplot as plt

# 生成平方数列表
square_numbers = [i ** 2 for i in range(10, 34)]  # 10^2 到 32^2 之间的平方数
# 为了美观设置为正方形的数
with st.sidebar:
    # 应用程序侧边栏

    # 在侧边栏中创建一个滑块,允许用户选择要计算的 π 的小数位数。用户可以选择从 10,000 到 100,000 位,以 10,000 位为步长。
    num_digits = st.select_slider('Number of decimal digits:', options=square_numbers)
# num_digits=100
# 设置高精度计算位数
mp.dps = num_digits + 2
pi_digits = mp.pi
pi_digits = str(pi_digits)[2:]
pi_digits_list = [int(x) for x in pi_digits]
print(len(pi_digits_list))
#因为会多一个,截断,凑整平方
pi_digits_array = np.array(pi_digits_list[:-1])
pi_digits_array.resize(int(m.sqrt(num_digits)),int(m.sqrt(num_digits)))
# pi_digits_array.shape=(int(m.sqrt(num_digits)),int(m.sqrt(num_digits)))
# 绘制热力图
fig, ax = plt.subplots()
#cmap的颜色加上一个_r可以改变颜色的顺序
cax = ax.imshow(pi_digits_array, cmap='RdYlBu_r', interpolation='nearest')# 添加颜色条
#可以禁用interpolation是像素清晰,避免插值后模糊
# 使用 pcolormesh 添加方块边界线
#添加边界线,下面的图没有添加
#ax这两个绘制调用一个即可
#cax = ax.pcolormesh(heatmap_data, cmap='RdYlBu_r', edgecolors='white', linewidths=0.1)



fig.colorbar(cax)

# 设置轴标签
ax.set_xlabel('Next Digit')
ax.set_ylabel('Current Digit')


st.pyplot(fig)

在这里插入图片描述

矩阵的一般类型

在这里插入图片描述

在这里插入图片描述

构造二维矩阵

对角矩阵

import numpy as np

# 创建对角矩阵
diagonal_elements = [1, 2, 3, 4]
diag_matrix = np.diag(diagonal_elements)
print("对角矩阵:\n", diag_matrix)

单位矩阵

import numpy as np

# 创建单位矩阵
size = 4
identity_matrix = np.eye(size)
print("单位矩阵:\n", identity_matrix)

对称矩阵

import numpy as np

# 创建对称矩阵
A = np.array([[1, 2, 3],
              [2, 4, 5],
              [3, 5, 6]])
print("对称矩阵:\n", A)

零矩阵

import numpy as np

# 创建零矩阵
rows, cols = 3, 3
zero_matrix = np.zeros((rows, cols))
print("零矩阵:\n", zero_matrix)

numpy.matrix现在不推荐使用了
声明方式和之前一样,但是再额外套一个np.matrix()
如:np.matrix(np.eye(size))

矩阵的加和运算

四种计算行向量相加方式,推荐使用np来进行矩阵的相加

list1=[1, 2, 3]
list2=[4, 5, 6]
#zip可以形成组
#(1, 4)
#(2, 5)
#(3, 6)
print([x + y for x, y in zip(list1, list2)])
#[5, 7, 9]
#使用lambda进行列表的元素级加法
#lambda x,y: x+y: 这是一个匿名函数(lambda 函数,省略了函数的规范名字,参数名什么的),它接受两个参数 x 和 y,并返回它们的和。list1和list2是传入的参数对象
#map(function, iterable, ...)
#map接收可迭代参数,传递给函数lambda

print(list(map(lambda x,y:x+y, list1, list2)))
#[5, 7, 9]

import numpy as np

x = np.array(list1)
y = np.array(list2)
print(x+y)
#[5 7 9]
print(np.add(list1,list2))
#[5 7 9]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2101628.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多表查询_关联查询

inner join:通常关联项on后面的是主外键,两个表都有的才显示 left join:左连,select * from S left join B on s.字段 B.字段,一定会将左边表的数据全部查询出来 right join:select * from S right join B on s.字段 B.字段一定会将右边表的…

Unity面向对象补全计划 之 List<T>与class(非基础)

C# & Unity 面向对象补全计划 泛型-CSDN博客 关于List,其本质就是C#封装好的一个数组,是一个很好用的轮子,所以并不需要什么特别说明 问题描述 假设我们有一个表示学生的类 Student,每个学生有姓名和年龄两个属性。我们需要创…

Git学习尚硅谷(002 git常用命令)

尚硅谷Git入门到精通全套教程(涵盖GitHub\Gitee码云\GitLab) 总时长 4:52:00 共45P 此文章包含第8p-第p15的内容 文章目录 git常用命令设置用户签名初始化本地库查看本地库状态添加暂存区提交本地库日志查看修改文件版本穿梭 git常用命令 设置用户签名…

视频集中存储智能边缘计算网关软硬一体机智能边缘计算网关应用场景

在信息化飞速发展的今天,数据处理的速度和效率直接影响到各行各业的运作和发展。传统的云计算模式虽然强大,但在面对实时性和带宽要求越来越高的应用场景时,往往显得力不从心。此时,智能边缘计算网关的出现,为我们带来…

源代码怎么加密防泄漏?9种方法教会你

想做源代码加密防止泄漏,首先要了解程序员可以通过哪些方式将源代码传输出去! 程序员泄密的常见方式 物理方法: — 网线直连,即把网线从墙上插头拔下来,然后和一个非受控电脑直连; — winPE启动,通过光盘…

pikachu文件包含漏洞靶场攻略

1.File inclusion(local)(本地文件包含) 步骤一:选择一个球员提交 步骤二:filename后面输入../../../../shw.php访问php文件 2.File Inclusion(remote)(远程文件包含) 步骤一:修改配置 远程包…

网吧业务安全对抗(有源码)

网吧业务竞争激烈,网吧都会有以下系统软件。 无盘: 无盘是指没有硬盘。好处是统一维护管理和节约成本。本人研究无盘好几年,后面会专门发帖介绍。 计费: 是指收费系统。 营销软件: 包括销售饮品、‌零食和向客户发送电子邮件营销和短信营销等。产品如…

银行资本种类

一、账面资本(会计资本) 账面资本又称为会计资本,是指商业银行持股人的永久性资本投入,即出资人在商业银行资产中享有的经济利益,其金额等于资产减去负债后的余额,包括实收资本或普通股、资本公积、盈余公…

【C++第十六章】多态

【C第十六章】多态 定义🧐 多态通俗来说,就是多种形态,我们去完成某个行为时,不同对象完成时会产生出不同的状态。比如游乐园中,1.2米以上买票就需要买成人票,1.2米以下就可以买儿童票。 多态是在不同继承…

Spring之整合Mybatis底层源码解析

整合核心思路 由很多框架都需要和Spring进行整合,而整合的核心思想就是把其他框架所产生的对象放到Spring容器中,让其成为Bean。 ​ 比如Mybatis,Mybatis框架可以单独使用,而单独使用Mybatis框架就需要用到Mybatis所提供的一些类…

ctfshow之文件包含(web78~web86)

web78 if(isset($_GET[file])){$file $_GET[file];include($file); }else{highlight_file(__FILE__); } 解法一&#xff1a;data伪协议 ?filedata://text/plain,<?php system("tac flag.php"); 解法二&#xff1a;php:filter伪协议 ?filepHp://FilTer/conver…

数理天地杂志数理天地杂志社数理天地编辑部2024年第12期目录

基础精讲 “瓜豆模型”与动点问题探析 明倩妤; 2-3 二次函数参数取值范围常见题型分析 邹纯; 4-5 基于数形结合思想的初中数学解题实践——以初中函数问题为例 李玉平; 6-7 旋转思想在构造全等三角形中的渗透 赵兴燕; 8-9 初中数学“一元一次方程”试题设计…

作业0903

1.封装栈 #include <iostream>using namespace std;class myStack { private:int size; // 大小int capacity;int *ptr;int top; // 栈顶下标 public:// 无参构造函数myStack():size(0), top(-1), capacity(10) {ptr new int[capacity];}// 有参构造函数myStack(in…

【数据结构】你真的了解栈和队列吗?

文章目录 1. 栈1.1 概念与结构1.2 栈的实现 2. 队列2.1 概念与结构2.2 队列的实现 3. 栈和队列的算法题3.1 有效的括号3.2 用队列实现栈3.3用栈实现队列3.4 设计循环队列 4. 结语 1. 栈 1.1 概念与结构 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插…

.hackme靶机通关攻略

第一步查找ip 通过御剑扫描到IP进入尝试 成功找到靶场 步骤二来到这个靶场注册登录 进来点一下提交出来书名 只有一个框框那就来试试sql注入 1’ and 12 -- 然后查看数据库 -1 union select database(),2,3 # 查看数据库表名 -1 union select group_concat(table_name),2…

Java面试题精选:消息队列(三)

1、RabbitMQ中的vhost起什么作用&#xff1f; &#xff08;1&#xff09;vhost本质上就是一个mini版的mq服务器&#xff08;虚拟消息服务器&#xff09;。 有自己的队列、交换器和绑定&#xff0c;最重要的&#xff0c;拥有独立的权限机制&#xff0c;可以做到vhost范围的用户…

VoxEdit 比赛|创作农场灵感资产

为大家带来另一场 VoxEdit 迷你比赛&#xff01;在一周时间内创建可用资产&#xff01; 主题&#xff1a;踏入农场世界&#xff0c;使用 VoxEdit 创建农场主题资产。 从古朴的农舍到可爱的鸡舍&#xff0c;甚至是充满胡萝卜的农田。 你将专注于捕捉农场生活的精髓&#xf…

计算机毕业设计Spark+PyTorch知识图谱中药推荐系统 中药数据分析可视化大屏 中药爬虫 机器学习 中药预测系统 中药情感分析 大数据毕业设计

创新点&#xff1a;知识图谱、大数据虚拟机、可视化大屏、python爬虫、lstm深度学习情感分析、sparkhadoophive离线计算实时计算全部实现、前后台完整、支付宝沙箱支付、短信、AI识别、4-20种推荐算法、中药价格机器学习预测算法等上百种创新点 开发技术&#xff1a;spark hiv…

如何从 Bak 文件中恢复 SQL数据库?(3种方法)

如何从 .bak 文件恢复 SQL数据库&#xff1f; 在数据库管理和维护过程中&#xff0c;数据的安全性和完整性至关重要。备份文件&#xff08;.bak 文件&#xff09;是 SQL Server 中常用的数据库备份格式&#xff0c;它包含了数据库的完整副本&#xff0c;用于在数据丢失、系统故…