python科学计算库之Numpy库的使用的简单习题

Numpy库

Numpy(Numerical Python的缩写)是一个开源的Python库,用于进行科学计算。它提供了一个高性能的多维数组对象(ndarray)及用于处理这些数组的各种工具和函数。由于其高效和灵活的数据结构以及丰富的功能,Numpy已成为Python科学计算的基础库,广泛应用于数据分析、机器学习、工程仿真等领域。

Numpy的主要特点包括:

高性能的多维数组支持:Numpy的核心是多维数组对象(ndarray),它提供了统一的接口来进行快速的数组计算。与Python原生的列表相比,Numpy的数组在性能上有显著的优势,尤其是在处理大数据时。

广泛的数学函数库:Numpy提供了大量的数学函数,包括线性代数运算、傅里叶变换、随机数生成等,这使得进行科学计算变得非常便捷。

数组广播功能:Numpy可以让不同大小的数组在一起进行数学计算时非常方便,通过其广播机制,小数组会在算术运算中自动扩展到与大数组相同的大小,这使得数组间的运算表达更加直观。

高效的内存使用:Numpy的数组使用连续内存块,这不仅有利于减少内存使用,还能提升计算性能。此外,Numpy还提供了内存映射功能,允许处理超过内存大小的数据集。

与其他语言的接口:Numpy可以很容易地与C、C++等语言集成,这允许在性能关键的应用中使用这些语言编写核心算法,同时保持Python的易用性。

Numpy是许多高级科学计算库的基础,包括Pandas(数据分析库)、Matplotlib(绘图库)、Scikit-learn(机器学习库)等,几乎成为了进行科学计算和数据分析的Python开发的必备库。

快速入门题

  1. 创建一个从1到80,步长为4的一维数组A,并将其变成一个4*5的二维数组,输出A的转置
import numpy as np
A=np.arange(1,80,4) #A=np.arange(1,80)[::4] 
A=A.reshape(4,5)
print(A.T)

2. 随机生成a,b两个数组,其中a.shape: (4, 1) b.shape: (3,) 计算a+b,a*b,a/b

import numpy as np
a=np.random.randint(1,11,(4,1))
b=np.random.randint(1,11,(3,))
print(a+b)
print(a*b)
print(a/b)

3. 创建一个shape为5*3的随机矩阵A,打印出A中最大元素和最小元素,平均值,并计算每一行的和

import numpy as np
A=np.random.randint(0,40,(5,3))
print(A)
print(A.max())
print(A.min())
print(A.mean())
for i in A:print(i.sum())

4. 创建两个3*3的(0,5)之间的随机数组a和b,对a,b进行水平合并后得到数组c,对c使用Min-Max 标准化算法对数据进行标准化处理并输出结果
在这里插入图片描述


import numpy as np
a=np.random.randint(0,5,(3,3))
b=np.random.randint(0,5,(3,3))
c=np.hstack((a,b)) def minmax(a, axis=None):a_min = np.min(a, axis=axis, keepdims=True)a_max = np.max(a, axis=axis, keepdims=True)return (a - a_min)/(a_max - a_min)print(minmax(c))

5. 打印出以下数组(要求使用np.ones创建形状为8*8的矩阵):
[[1 0 1 0 1 0 1 0]
[0 1 0 1 0 1 0 1]
[1 0 1 0 1 0 1 0]
[0 1 0 1 0 1 0 1]
[1 0 1 0 1 0 1 0]
[0 1 0 1 0 1 0 1]
[1 0 1 0 1 0 1 0]
[0 1 0 1 0 1 0 1]]

import numpy as np
a=np.ones((8,8),dtype=np.int8)
a[::2,1::2]=0 
a[1::2,::2]=0 
print(a)#[1::2, ::2]: 是对数组a的切片操作,用于选择数组中的特定元素。
#1::2 表示从第1个索引开始(注意,在Python中索引是从0开始的),每隔一个元素选择一次,直到数组的最后一个元素。这是对数组的第一个维度(通常是行)的操作。
#::2 表示从第0个索引开始,每隔一个元素选择一次,直到该维度的最后一个元素。这是对数组的第二个维度(通常是列)的操作

6. 使用numpy创建下列数组[1,1,2,3,4,5,6,1,1,6],找出数组中1元素的位置索引并输出索引(使用两种方法)。

import numpy as np
a=np.array([1,1,2,3,4,5,6,1,1,6])
#way1
b=[]
for i in range(len(a)):if a[i]==1:b.append(i)
print(b)        
#way2
print(list(np.where(a==1)[0]))

7. 使用numpy创建一维数组A,对A里面的数据进行去重得到B,使用numpy创建形状与B相同的随机数组C,自定义ufunc函数计算B和C的和(使用numpy.frompyfunc)
A为[4,4,1,2,3,4,5,7,9,1,1],数组C的数据范围在(0,5)之间

import numpy as np
A=np.array([4,4,1,2,3,4,5,7,9,1,1])
B=np.unique(A) #进行去重
print(B.shape) #(7,)
C=np.random.randint(0,5,(7,))
print(B)
print(C)
def add_elements(x, y):return x + y
add_them = np.frompyfunc(add_elements, 2, 1)
print(add_them(B,C))

8.用numpy编程创建国际象棋盘,填充8*8矩阵,棋盘是正方形,由横纵各八格,颜色一深一浅交错排列的64个小正方格组成,深色为黑格(为0),浅色为白格(为1),如下图所示。

在这里插入图片描述

并输出国际象棋盘对应的矩阵

import numpy as np
matr1=np.ones((8,8))
for i in range(8):for j in range(8):if(i+j)%2==0:matr1[i,j]=0
print('国际棋盘对应的矩阵为:\n',matr1)
for i in range(0,8):for j in range(0,8):if matr1[i,j]==0:print("□",end=' ')else:print("■", end=' ')print('\n')

9. 创建一个大小3*3,(-1,1)值之间随机数组A, 对A的后两行进行交换,输出A中非0元素的值,将A中非0元素替换成0。

import numpy as np
A=np.random.uniform(-1,1,(3,3))
print(A)
A[[1,2]]=A[[2,1]]
print(A)
B=np.where(A<0)
print(A[B])
for i in range(A.shape[0]):for j in range(A.shape[1]):if A[i][j]<0:A[i][j]=0
print(A)

10.使用Numpy数组实现生命游戏
生命游戏,简称为生命,是英国数学家约翰·何顿·康威在1970年发明的细胞自动机。
给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞具有一个初始状态 live(1)即为活细胞, 或 dead(0)即为死细胞。每个细胞与其八个相邻位置(水平,垂直,对角线)的细胞都遵循以下四条生存定律:

  1. 如果活细胞周围八个位置的活细胞数少于两个,则该位置活细胞死亡;
  2. 如果活细胞周围八个位置有两个或三个活细胞,则该位置活细胞仍然存活;
  3. 如果活细胞周围八个位置有超过三个活细胞,则该位置活细胞死亡;
  4. 如果死细胞周围正好有三个活细胞,则该位置死细胞复活
import numpy as np
def iterate(Z):#邻居N = (Z[0:-2,0:-2] + Z[0:-2,1:-1] + Z[0:-2,2:] +Z[1:-1,0:-2]                + Z[1:-1,2:] +Z[2:  ,0:-2] + Z[2:  ,1:-1] + Z[2:  ,2:])#规则birth = (N==3) & (Z[1:-1,1:-1]==0)survive = ((N==2) | (N==3)) & (Z[1:-1,1:-1]==1)Z[...] = 0Z[1:-1,1:-1][birth | survive] = 1return Z
Z = np.random.randint(0,2,(50,50))
for i in range(100): Z = iterate(Z)
print(Z)

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

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

相关文章

Google 地图 API 教程--干货(1/2)

Google Maps API 教程 在本教程中我们将学习如何使用谷歌地图API V3创建交互式地图。 什么是 API? API = 应用程序编程接口(Application programming interface)。 API(Application Programming Interface,应用编程接口)其实就是操作系统留给应用程序的一个调用接口,…

案例介绍:汽车售后服务网络构建与信息抽取技术应用(开源)

一、引言 在当今竞争激烈的汽车行业中&#xff0c;售后服务的质量已成为品牌成功的关键因素之一。作为一位经验丰富的项目经理&#xff0c;我曾参与构建一个全面的汽车售后服务网络&#xff0c;旨在为客户提供无缝的维修、保养和配件更换服务。这个项目的核心目标是通过高效的…

状态机实现双击、短按、长按等按键识别检测算法

1、按键识别算法的作用 按键识别算法在不同的技术和应用背景下有不同的作用&#xff0c;但其核心目标都是准确、可靠地检测和区分用户通过物理或虚拟按键所执行的操作。按键识别算法在各类电子设备及系统中起到至关重要的作用&#xff0c;它确保了人机交互的有效性和准确性&…

Vue前端+快速入门【详解】

目录 1.Vue概述 2. 快速入门 3. Vue指令 4.表格信息案例 5. 生命周期 1.Vue概述 1.MVVM思想 原始HTMLCSSJavaScript开发存在的问题&#xff1a;操作麻烦&#xff0c;耦合性强 为了实现html标签与数据的解耦&#xff0c;前端开发中提供了MVVM思想&#xff1a;即Model-Vi…

Mysql-主从架构篇(一主多从,半同步案例搭建)

主从架构 主从架构有什么用&#xff1f; 通过搭建MySQL主从集群&#xff0c;可以缓解MySQL的数据存储以及访问的压力。 数据安全&#xff08;主备&#xff09;&#xff1a;给主服务增加一个数据备份。基于这个目的&#xff0c;可以搭建主从架构&#xff0c;或者也可以基于主…

redis进阶(一)

文章目录 前言一、Redis中的对象的结构体如下&#xff1a;二、压缩链表三、跳跃表 前言 Redis是一种key/value型数据库&#xff0c;其中&#xff0c;每个key和value都是使用对象表示的。 一、Redis中的对象的结构体如下&#xff1a; /** Redis 对象*/ typedef struct redisO…

c# .net8 香橙派orangepi + hc-04蓝牙 实例

这些使用c# .net8开发&#xff0c;硬件 香橙派 orangepi 3lts和 hc-04蓝牙 使用场景&#xff1a;可以通过这个功能&#xff0c;手机连接orangepi进行wifi等参数配置 硬件&#xff1a; 1、带USB口的linux开发板orangepi 2、USB 转TTL 中转接蓝牙&#xff08;HC-04) 某宝上买…

Flink:Temporal Table Function(时态表函数)和 Temporal Join

博主历时三年精心创作的《大数据平台架构与原型实现&#xff1a;数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行&#xff0c;点击《重磅推荐&#xff1a;建大数据平台太难了&#xff01;给我发个工程原型吧&#xff01;》了解图书详情&#xff0c;…

设计模式(十五)状态模式

请直接看原文:设计模式系列 ------------------------------------------------------------------------------------------------------------------------------- 前言 建议在阅读本文前先阅读设计模式&#xff08;十一&#xff09;策略模式这篇文章&#xff0c;虽说状态…

【MATLAB】MVMD_ MFE_SVM_LSTM 神经网络时序预测算法

有意向获取代码&#xff0c;请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 MVMD_MFE_SVM_LSTM神经网络时序预测算法结合了多变量多尺度分解&#xff08;MVMD&#xff09;、多尺度特征提取&#xff08;MFE&#xff09;、支持向量机&#xff08;SVM&#xff09;和长…

小米消息队列的选型与实践

之前写了一篇关于消息队列的文章&#xff1a;《消息队列介绍与对比》&#xff0c;本文主要介绍消息队列在实际工作中的使用情况&#xff08;截止到2023年&#xff0c;因为我2023年离职了&#xff0c;后续的情况不了解了&#xff0c;哈哈&#xff09;。 市面上的多种消息队列都有…

node问题: command not found: nodemon

如何安装并使用 nodemon npm i -g nodemon 问题与解决方案&#xff1a; 问题&#xff1a;zsh: command not found: nodemon 解决方案&#xff1a; 在你的 package.json 中加入&#xff1a; "scripts": {"auto": "npx nodemon server.js" }…

单例模式及应用场景

如果希望自己的代码更优雅、可维护性更高以及更简洁&#xff0c;往往离不开设计模式这一解决方案。 在JS设计模式中&#xff0c;最核心的思想&#xff1a;封装变化&#xff08;将变与不变分离&#xff0c;确保变化的部分灵活&#xff0c;不变的部分稳定&#xff09;。 那么来…

[嵌入式系统-36]:龙芯1B 开发学习套件 -5- PMON常见命令

目录 0. 开机时按c键进入pmon模式 &#xff08;自启动模式时&#xff09; 1、帮助命令 h 2、显示设备信息 devls 3.重启&#xff1a;reboot 4、设置环境变量 set/unset 5.查询环境变量&#xff1a;env 6.网络设置相关命令&#xff1a; ①设置IP&#xff1a;ifconfig&am…

Linux 基础IO(1)内存文件

文章目录 铺垫文件的系统调用接口文件描述符缓冲区 铺垫 文件文件内容 文件属性访问文件之前&#xff0c;都要先打开文件&#xff0c;而要访问&#xff0c;修改&#xff0c;编辑文件&#xff0c;文件就必须加载到内存中程序运行起来变成进程&#xff0c;被CPU调度&#xff0c;…

详解Win 7重置电脑操作步骤

文章目录 介绍Win 7 重置系统的方法&#xff1a;1.按下键盘上的Windows键和R键&#xff0c;打开运行窗口&#xff0c;输入sysprep 点击回车确定。2.之后就会出现如下界面&#xff0c;在这个新打开的窗口中双击 sysprep 程序3.选择【进入系统全新体验&#xff08;00BE) 】&#…

基于SpringBoot的在线拍卖系统(附项目源码+论文)

摘要 在线拍卖系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单管理、留言板管理、系统管理&#xff0c;用户&#xff1b;首页、个人中心、历史竞拍管理、竞拍订单管理、留言板管理&#xff0…

STM32学习和实践笔记(1): 装好了的keil μVision 5

2019年3月在淘宝上买了这块STM32的开发板&#xff0c;学了一段时间后就丢下了&#xff0c;今天重新捡起来&#xff0c;决定好好学习、天天向上。 对照教程&#xff0c;今天先把keil5装上了。 装的过程有以下几点值得记录下&#xff1a; 1&#xff09;用注册机时&#xff0c;…

【应用多元统计分析】--多元数据的直观表示(R语言作图)

例1.2 为了研究全国31个省、市、自治区2018年城镇居民生活消费的分布规律&#xff0c;根据调查资料做区域消费类型划分。 指标&#xff1a; 食品x1&#xff1a;人均食品支出(元/人) 衣着x2&#xff1a;人均衣着商品支出(元/人) 居住x3&#xff1a;人均居住支出(元/人) 生活x4…

欧拉回路(Eulerian Path)

1.定义 如果图 G G G(有向图或者无向图)中所有边一次仅且一次行遍所有顶点的通路称作欧拉通路。 如果图 G G G中所有边一次仅且一次行遍所有顶点的回路称作欧拉回路。 具有欧拉回路的图成为欧拉图(简称 E E E图)。具有欧拉通路但不具有欧拉回路的图成为半欧拉图。 顶点可以经…