【Numpy】练习题100道(1-25题)

#学习笔记#

在学习神经网络的过程中发现对numpy的操作不是非常熟悉,遂找到了Numpy 100题。

Git-hub链接

目录

1 题目列表:

2 题解:


1 题目列表:

  1. 导入numpy包,并将其命名为np(★☆☆)

  2. 打印numpy版本和配置信息(★☆☆)

  3. 创建一个大小为10的空向量(★☆☆)

  4. 如何找出任何数组的内存大小(★☆☆)

  5. 如何从命令行获取numpy add函数的文档?(★☆☆)

  6. 创建一个大小为10的空向量,但第五个值为1(★☆☆)

  7. 创建一个包含从10到49的值的向量(★☆☆)

  8. 反转向量(第一个元素变成最后一个)(★☆☆)

  9. 创建一个3x3矩阵,其值范围从0到8(★☆☆)

  10. 从[1,2,0,0,4,0]中找出非零元素的索引(★☆☆)

  11. 创建一个3x3的单位矩阵(★☆☆)

  12. 创建一个3x3x3的数组,包含随机值(★☆☆)

  13. 创建一个10x10的数组,包含随机值,并找出最小值和最大值(★☆☆)

  14. 创建一个大小为30的随机向量,并找出平均值(★☆☆)

  15. 创建一个2d数组,边界为1,内部为0(★☆☆)

  16. 如何在现有数组周围添加一个由0填充的边界?(★☆☆)

  17. 下列表达式的结果是什么?(★☆☆)

0 * np.nan
np.nan == np.nan
np.inf > np.nan
np.nan - np.nan
np.nan in set([np.nan])
0.3 == 3 * 0.1

18. 创建一个5x5矩阵,在对角线下方填充值1,2,3,4(★☆☆)

19.创建一个8x8矩阵,并用棋盘图案填充(★☆☆)

20.考虑一个形状为(6,7,8)的数组,第100个元素的索引(x,y,z)是什么?(★☆☆)

21.使用tile函数创建一个8x8的棋盘矩阵(★☆☆)

22.规范化一个5x5的随机矩阵(★☆☆)

23.创建一个自定义dtype,用以描述颜色为四个无符号字节(RGBA)(★☆☆)

24.将一个5x3矩阵乘以一个3x2矩阵(真正的矩阵乘法)(★☆☆)

25.给定一个1D数组,原地将所有在3到8之间的元素取反。(★☆☆)

2 题解:

1.导入numpy包,并将其命名为np(★☆☆)

import numpy as np

2.打印numpy版本和配置信息(★☆☆)

print(np.__version__)
print(np.show_config())

3.创建一个大小为10的空向量(★☆☆)

null_vector = np.zeros(10)
type(null_vector)

4.如何找出任何数组的内存大小(★☆☆)

# 使用nbytes属性(以字节为单位)
arr = null_vector
print(arr.nbytes)

5.如何从命令行获取numpy add函数的文档?(★☆☆)

# 在命令行中需要先激活python环境,然后import numpy,最后help(numpy.add)即可
help(np.add)

6.创建一个大小为10的空向量,但第五个值为1(★☆☆)

null_vector = np.zeros(10)
null_vector[4] = 1    # 注意索引是从0开始的

7.创建一个包含从10到49的值的向量(★☆☆)

# 我第一时间想到了这种方法,使用列表推导式
vector = np.array([i for i in range(10,50)])
# 但实际上numpy提供了更直接高效的方式,就是使用np.arange函数

8.反转向量(第一个元素变成最后一个)(★☆☆)

vector = np.array([1,2,3,4,5])
reversed_vector = vector[::-1]    # 直接用列表的切片操作

9.创建一个3x3矩阵,其值范围从0到8(★☆☆)

matrix = np.arange(0,9).reshape(3,3)   # reshape方法可以重新整形,结合上面的arange方法即可实现
# 注意,使用该方法的对象如果不满足数量,这里如果!=9就会报错

10.从[1,2,0,0,4,0]中找出非零元素的索引(★☆☆)

vector = np.array([1,2,0,0,4,0])
non_zero_indices = np.nonzero(vector)     # 相比于循环来说,这种内部的方法更加稳定高效

11.创建一个3x3的单位矩阵(★☆☆)

identity_matrix = np.eye(3)     # eye方法

12.创建一个3x3x3的数组,包含随机值(★☆☆)

random_array = np.random.rand(3,3,3)    # 使用random.rand方法生成

13.创建一个10x10的数组,包含随机值,并找出最小值和最大值(★☆☆)

random_array = np.random.rand(10,10)
max_value = np.max(random_array)            # 使用numpy内置的max,min方法
min_value = np.min(random_array)

14.创建一个大小为30的随机向量,并找出平均值(★☆☆)

random_vector = np.random.rand(30)
mean_value = np.mean(random_vector)

15.创建一个2d数组,边界为1,内部为0(★☆☆)

array_size = 5  # 可根据需要调整大小
array = np.ones((array_size,array_size))    # 需要传入一个shape,需要为元组
array[1:-1,1:-1] = 0           #  应用了切片和广播机制

16.如何在现有数组周围添加一个由0填充的边界?(★☆☆)

original_array = np.ones((3,3))
padded_array = np.pad(original_array,pad_width = 1,mode = 'constant',constant_values=0)
# pad_width = 1 指定了边框的宽度为1(即在每个方向上添加一层0)
# mode = 'constant'指定了填充模式为常量值填充,contant_values=0,定义了这个常量值为0

17.下列表达式的结果是什么?(★☆☆)

0 * np.nan
np.nan == np.nan
np.inf > np.nan
np.nan - np.nan
np.nan in set([np.nan])
0.3 == 3 * 0.1
np.nan     # NaN与任何数字运算结果还是NaN
False          # 在IEEE浮点数标准中,NaN被认为不等于自身
False           # NaN与任何数比较都是False
np.nan         # NaN与任何数的算术运算结果还是NaN
True            # 虽然NaN不等于自身,但是可以在集合中检测到它的存在
False           # 这个表达式确实会先运算*但是由于浮点数的精度问题,‘3*0.1’实际上并不精确等于0.3

18. 创建一个5x5矩阵,在对角线下方填充值1,2,3,4(★☆☆)

matrix = np.zeros((5,5))
np.fill_diagonal(matrix[1:],range(1,5))
# fill_diagonal可以填充数组对角线

19.创建一个8x8矩阵,并用棋盘图案填充(★☆☆)

# 初始化一个8x8的全零矩阵
chessboard = np.zeros((8, 8), dtype=int)

# 用1填充棋盘格模式
# 偶数行的奇数列以及奇数行的偶数列
chessboard[1::2, ::2] = 1  # 奇数行,偶数列
chessboard[::2, 1::2] = 1  # 偶数行,奇数列

20.考虑一个形状为(6,7,8)的数组,第100个元素的索引(x,y,z)是什么?(★☆☆)

(1,5,3)
# 100 / 8 = 12 余 4   (代表在第十三行,第四个位置,第四个位置(列)索引为3)
# 13 / 7 = 1 余 6   (代表在第二个矩阵中的第6行,第六行索引为5)
# 2 / 6 = 0 余 2   (第二个矩阵中,索引为1)

21.使用tile函数创建一个8x8的棋盘矩阵(★☆☆)

chessboard_unit = np.array([[0,1],[1,0]])
chessboard = np.tile(chessboard_unit,(4,4))
# 当调用‘np.tile(A,reps)’时,‘A’是你想要重复的数组,而‘reps’指示了‘A’在各个维度上应该被重复的次数。如果‘reps’是一个整数,则‘A’将在所有轴上重复这个次数。如果是一个数组,则会在指定轴上重复。就像贴瓷砖一样

22.规范化一个5x5的随机矩阵(★☆☆)

matrix = np.random.rand(5,5)

# 方法一,最大最小归一化
min_val = matrix.min(axis = 0)   # 对列进行操作;对行操作时使用axis = 1
max_val = matrix.max(axis = 0)   # 在对列操作时,需要设置keepdims = True
normalized_matrix = (matrix - min_val)/(max_val - min_val)

# 方法二,Z-score标准化(也称标准差标准化)
mean = np.mean(matrix,axis = 0)   # 对列进行操作
std = np.std(matrix,axis = 0)
z_normalized_matrix = (matrix - mean) / std

23.创建一个自定义dtype,用以描述颜色为四个无符号字节(RGBA)(★☆☆)

import numpy as np

# 定义一个自定义的dtype来描述颜色
color_dtype = np.dtype([
    ("r", np.uint8),  # 红色分量
    ("g", np.uint8),  # 绿色分量
    ("b", np.uint8),  # 蓝色分量
    ("a", np.uint8)   # 透明度分量
])

# 创建一个使用该dtype的数组示例
color_example = np.array([(255, 0, 0, 255), (0, 255, 0, 255)], dtype=color_dtype)

24.将一个5x3矩阵乘以一个3x2矩阵(真正的矩阵乘法)(★☆☆)

matrix1 = np.random.rand(5,3)
matrix2 = np.random.rand(3,2)
dot_matrix = np.dot(matrix1,matrix2)

25.给定一个1D数组,原地将所有在3到8之间的元素取反。(★☆☆)

vector = np.random.rand(9)
# 位置3到8的元素取反
vector[3:9] *= -1

# 将值3到8取反
vector_range = np.arange(10)
vector_range[(vector_range>3) & (vector_range<8)] *= -1

后续会更行全部100题

以上

学习在于行动,总结和坚持,共勉

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

设计模式学习笔记 - 规范与重构 - 5.如何通过封装、抽象、模块化、中间层解耦代码?

前言 《规范与重构 - 1.什么情况下要重构&#xff1f;重构什么&#xff1f;又该如何重构&#xff1f;》讲过&#xff0c;重构可以分为大规模高层重构&#xff08;简称 “大型重构”&#xff09;和小规模低层次重构&#xff08;简称 “小型重构”&#xff09;。大型重构是对系统…

3.6研究代码(2)

指的是微电网运行参数。 在MATLAB中&#xff0c;randi([0,1],1,48) 会生成一个包含1*48个0或1的随机整数数组。这意味着数组中的每个元素都将是0或1。 MATLAB帮助中心&#xff1a;均匀分布的伪随机整数 - MATLAB randi - MathWorks 中国https://ww2.mathworks.cn/help/matlab/r…

Java零基础入门到精通_Day 1

01 Java 语言发展史 Java语言是美国Sun公司(StanfordUniversity Network)在1995年推出的 计算机语言Java之父:詹姆斯高斯林(ames Gosling) 重要的版本过度&#xff1a; 2004年 Java 5.0 2014年 Java 8.0 2018年 9月 Java 11.0 &#xff08;目前所使用的&#xff09; 02 J…

llama factory学习笔记

模型 模型名模型大小默认模块TemplateBaichuan27B/13BW_packbaichuan2BLOOM560M/1.1B/1.7B/3B/7.1B/176Bquery_key_value-BLOOMZ560M/1.1B/1.7B/3B/7.1B/176Bquery_key_value-ChatGLM36Bquery_key_valuechatglm3DeepSeek (MoE)7B/16B/67Bq_proj,v_projdeepseekFalcon7B/40B/18…

#LT8711V适用于Type-C/DP1.2/EDP转VGA应用方案,分辨率高达1080P。

1. 概述 LT8711V是一款高性能 Type-C/DP1.2 转 VGA 转换器&#xff0c;设计用于将 USB Type-C 源或 DP1.2 源连接到 VGA 接收器。 该LT8711V集成了一个符合DP1.2标准的接收器和一个高速三通道视频DAC。此外&#xff0c;还包括两个用于 CC 通信的 CC 控制器&#xff0c;以实现 …

文件服务器

文件服务器 # 构建NFS远程共享存储## 一、NFS介绍shell 文件系统级别共享&#xff08;是NAS存储&#xff09; --------- 已经做好了格式化&#xff0c;可以直接用。 速度慢比如&#xff1a;nfs&#xff0c;sambaNFS NFS&#xff1a;Network File System 网络文件系统&#xf…

C++面向对象..

1.面向对象的常见知识点 类、 对象、 成员变量(属性)、成员函数(方法)、 封装、继承、多态 2.类 在C中可以通过struct、class定义一个类 struct和class的区别&#xff1a; struct的默认权限是public(在C语言中struct内部是不可以定义函数的) 而class的默认权限是private(该权…

Windows虚拟机的安装

Windows系统 总结知识点记忆级别&#xff1a; 1级&#xff1a;熟练记忆讲过的所有知识点(按照授课顺序&#xff0c;笔记顺序来提问)2级&#xff1a;灵活应用所学知识点(不按照顺序提问&#xff0c;面临陷阱提问)3级&#xff1a;应用所学知识解决实际问题4级&#xff1a;扩展应…

24 深度卷积神经网络 AlexNet【李沐动手学深度学习v2课程笔记】(备注:含AlexNet和LeNet对比)

目录 1. 深度学习机器学习的发展 1.1 核方法 1.2 几何学 1.3 特征工程 opencv 1.4 Hardware 2. AlexNet 3. 代码 1. 深度学习机器学习的发展 1.1 核方法 2001 Learning with Kernels 核方法 &#xff08;机器学习&#xff09; 特征提取、选择核函数来计算相似性、凸优…

陈景东:集中与分布式拾音与声信号处理 | 演讲嘉宾公布

一、声音与音乐技术专题论坛 声音与音乐技术专题论坛将于3月28日同期举办&#xff01; 声音的应用领域广泛而深远&#xff0c;从场所识别到乐器音响质量评估&#xff0c;从机械故障检测到心肺疾病诊断&#xff0c;声音都发挥着重要作用。在互联网、大数据、人工智能的时代浪潮中…

【python】random库函数使用简要整理

前言 简要快速清晰整理random库 函数 函数作用random()返回0-1间的浮点小数randint(1,10)返回1到10间的整数uniform(1,10)返回1-10间的小数randrange(1,10,2)从1每隔2取一个数到10&#xff0c;在这些数中返回一个choice(列表)从列表中随机返回一个 shuffle(列表) 对列表内容…

高等数学常用公式

高等数学常用公式 文章目录 内容大纲 内容 大纲 感谢观看 期待关注 有问题的小伙伴请在下方留言&#xff0c;喜欢就点个赞吧

群晖NAS使用Docker安装WPS Office并结合内网穿透实现公网远程办公

文章目录 推荐1. 拉取WPS Office镜像2. 运行WPS Office镜像容器3. 本地访问WPS Office4. 群晖安装Cpolar5. 配置WPS Office远程地址6. 远程访问WPS Office小结 7. 固定公网地址 推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff…

C语言中的UTF-8编码转换处理

C语言UTF-8编码的转换 1.C语言简介2.什么是UTF-8编码&#xff1f;2.1 UTF-8编码特点&#xff1a; 3.C语言中的UTF-8编码转换处理步骤1&#xff1a;获取UTF-8编码的字节流步骤2&#xff1a;解析UTF-8编码步骤3&#xff1a;Unicode码点转换为汉字 4.总结 1.C语言简介 C语言是一门…

怎么做加密文件二维码?分享文件更安全

怎么做一个加密文件二维码&#xff1f;在日常的工作和生活中&#xff0c;通过扫描二维码来查看或者下载文件的方式&#xff0c;被越来越多的人所使用&#xff0c;一方面是二维码的成本低&#xff0c;另一方面有利于提升便捷性和用户体验。 为了保证内容的隐私性和安全性&#…

数据库期末速成100分训练,附练手数据库原件及教程

本文提供下面数据库代码的数据库原件&#xff0c;下载后可使用 教程如下&#xff1a; 1.打开sql sever 2.找到数据库 3.右键数据库点击“附加”&#xff0c;然后点击“添加” 4.导入数据库原件&#xff0c;点击确定 ps&#xff1a;如果没有sqlsever 或者页面编辑器&#x…

uniapp引入jQuery

安装 npm install jquery --saveoryarn add jquery引入 import Vue from vue import jquery from "jquery"; Vue.prototype.$ jquery;<template><view>abc</view> </template><script>export default {data() {return {}}} </scr…

tcp服务器客户端通信(socket编程)

目录 1.编程流程 2.代码演示 2.1 服务器代码 2.2 客户端代码 3.注意 3.1 ping命令 3.2 netstat命令 3.3 为什么memset? 3.4 哪个会阻塞? 3.5 显示连接信息 1.概念 1.1 编程流程 1.2 connect与listen connect方法执行后&#xff0c;会进行三次握手&#xff0c;建立连…

【python 】----Pytest基础知识与进阶知识

定义 用于编写和执行Python测试全功能测试框架(工具),是一个第三方库 安装 pip insatll pytest 安装pytest --version 校验 pytest的组成构成 不写调用语句也可以执行函数内容 在用例运行语句里面: -s:指的是开启与终端的交互,如果没有-s(程序不会输入与打印),一条用…

Java高级编程—注解

文章目录 1.注解的概述2.常见的Annotation示例2.1 生成文档相关的注解2.2 在编译时进行格式检查的注解2.3 跟踪代码依赖性&#xff0c;实现替代配置文件功能的注解 3.自定义Annotation4.JDK中的元注解4.1 Retention4.2 Target4.3 Documented & Inherited 5. JDK8中注解的新…