【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题

以上

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

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

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

相关文章

Spring boot创建第一个项目

作者简介&#xff1a; zoro-1&#xff0c;目前大二&#xff0c;正在学习Java&#xff0c;数据结构&#xff0c;spring等 作者主页&#xff1a; zoro-1的主页 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01;&#x1f496;&#x1f496; Spring boot创建第一个项目 sp…

基于单片机的视觉导航小车设计

目 录 摘 要 I Abstract II 引 言 1 1 总体方案设计 3 1.1 方案论证 3 1.2 项目总体设计 3 2 项目硬件设计 4 2.1 主控模块设计 4 2.1.1单片机选型 4 2.1.2 STM32F103RCT6芯片 4 2.2单片机最小系统电路 5 2.3电机驱动模块设计 7 2.4红外模块设计 8 2.5红外遥控模块设计 9 2.6超…

设计模式深度解析:工厂方法模式与抽象工厂模式的深度对比

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 探索设计模式的魅力&#xff1a;工厂方法模式文章浏览阅读17k次&#xff0c;点赞105次&#xff0…

Axure 单键快捷键 加快绘图速度 提高工作效率

画图类 R&#xff1a;绘制矩形 先点击空白页面&#xff0c;输入R即可绘制 L&#xff1a;绘制直线 先点击空白页面&#xff0c;输入L即可绘制&#xff0c;绘制的时候按住shift直线 O&#xff1a;绘制圆 先点击空白页面&#xff0c;输入O即可绘制&#xff0c;绘制的时候按…

最新:Selenium操作已经打开的Chrome(免登录)

最近重新尝试了一下&#xff0c;之前写的博客内容。重新捋了一下思路。 目的就是&#xff0c;selenium在需要登录的网站面前&#xff0c;可能就显得有些乏力&#xff0c;因此是不是有一种东西&#xff0c;可以操作它打开我们之前打开过的网站&#xff0c;这样就不用登录了。 …

并发通信(网络进程线程)

如果为每个客户端创建一个进程&#xff08;或线程&#xff09;&#xff0c;因为linux系统文件标识符最多1024位&#xff0c;是有限的。 所以使用IO复用技术&#xff0c;提高并发程度。 阻塞与非阻塞 阻塞式复用 非阻塞复用 信号驱动IO 在属主进程&#xff08;线程中声明&…

2.4_4 死锁的检测和解除

文章目录 2.4_4 死锁的检测和解除&#xff08;一&#xff09;死锁的检测&#xff08;二&#xff09;死锁的解除 总结 2.4_4 死锁的检测和解除 如果系统中既不采取预防死锁的措施&#xff0c;也不采取避免死锁的措施&#xff0c;系统就很可能发生死锁。在这种情况下&#xff0c;…

sql-mysql可视化工具Workbench导入sql文件

mysql可视化工具Workbench导入sql文件 1、打开workbench2、导入sql文件3、第一行加上库名4、开始运行 1、打开workbench 2、导入sql文件 3、第一行加上库名 4、开始运行

【图(1)】:用邻接矩阵和邻接表实现图

目录 一、图的基本概念 二、图的存储结构 1.邻接矩阵 2.邻接表 一、图的基本概念 注意&#xff1a;概念性的文字不列出太多&#xff0c;记不住也不便于理解 图&#xff08;Graph&#xff09;是由节点&#xff08;Node&#xff09;和边&#xff08;Edge&#xff09;组成的…

Vue 监听器:让你的应用实时响应变化

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

CSS居中对齐 (水平垂直居中对齐)

方案一&#xff1a;flex布局【推荐】 给容器添加样式 display: flex; justify-content: center; align-items: center; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" conte…

第三百九十六回

文章目录 1. 概念介绍2. 思路与方法2.1 实现思路2.2 实现方法 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何混合选择多个图片和视频文件"相关的内容&#xff0c;本章回中将介绍显示Snackbar的另外一种方法.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1…

算法-贪心-122. 糖果传递

题目 有 n个小朋友坐成一圈&#xff0c;每人有 a[i]个糖果。 每人只能给左右两人传递糖果。 每人每次传递一个糖果代价为 1。 求使所有人获得均等糖果的最小代价。 输入格式 第一行输入一个正整数 n&#xff0c;表示小朋友的个数。 接下来 n 行&#xff0c;每行一个整数…

【组合递归回溯】【StringBuilder】Leetcode 17. 电话号码的字母组合

【组合递归回溯】【StringBuilde】Leetcode 17. 电话号码的字母组合 StringBulider常用方法&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;17…

JavaScript实现通过键盘弹钢琴的效果

本片文章通过触发键盘事件来触发对应的音乐&#xff0c;而且给页面添加了渐变的active类名&#xff0c;通过触发不同的鼠标事件&#xff0c;然后active类移动来实现按下钢琴键的视觉效果。 关键代码&#xff1a; <!DOCTYPE html> <html lang"en"><h…

十堰网站建设公司华想科技具有10年的网站制作经验

2018年已经结束了。 华翔科技收到了很多客户的咨询&#xff0c;他们都有一个共同的问题&#xff1a;建一个网站需要多少钱&#xff1f; 但是&#xff0c;我们都会问&#xff1a;您有什么具体需求吗&#xff1f; 大多数人的答案是否定的&#xff0c;他们只是想打听一下价格。 十…

嵌入式3-11

1、整理思维导图 2、尝试学生结构体数组&#xff0c;完成成员的输入&#xff0c;以成绩为条件完成对学生成员的冒泡排序并输出&#xff08;全部在主函数内完成&#xff09; #include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.…

25改考408最新资讯!拷贝

东北大学 东北大学计算机考研全面改考408 东北大学计算机学院官网&#xff1a;http://www.cse.neu.edu.cn/6274/list.htm 东北大学计算机考研全面改考408 公告原文 东北大学计算机科学与工程学院关于调整2025年硕士研究生招生计算机科学与技术、计算机技术、人工智能专业初试…

【JAVA类】利用接口的多继承实现———图书管理系统【附源码】

引言 在我们学习了一些java的基础语法之后&#xff0c;需要把这些知识点可以串起来&#xff0c;这里使用一个简单的小项目可以很好的帮助我们牢记这些知识点&#xff0c;今天就带大家学习一个有关java的小项目&#xff0c;很多学校也经常把这个项目作为他们的课程设计——经典的…

从零学习Linux操作系统 第三十二部分 Ansible中的变量及加密

一、变量的基本设定及使用方式 变量命名&#xff08;与shell相同&#xff09;&#xff1a; 只能包含数字&#xff0c;下划线&#xff0c;字母 只能用下划线或字母开头 .变量级别&#xff1a; 全局从命令行或配置文件中设定的paly:在play和相关结构中设定的主机:由清单&…