当前位置: 首页 > news >正文

写完Numpy100道基础练习题后的错误总结和语法总结

前言:由于是看视频学习的缘故,在写这100道题目道中有很多视频中没有出现的语法,然而很多语法直接拿来用都是比较简单的,少了很多的循环语句。至此写下这篇错误总结和语法总结,希望可以给小伙伴们一些帮助,因为博主都帮你们踩雷了!!

        1、Create a null vector of size 10 (★☆☆)')

                创建一个大小为10的空向量

对于这个问题有四种解法:所用到的语法如下

① np.empty 构造一个大小为 shape 的未初始化数组
②np.zeros 构造一个大小为 shape 的全0数组
③np.ones 构造一个大小为 shape 的全1数组
④np.full 构造一个大小为 shape 的用指定值填满的数组

print(np.empty(10))
print(np.ones(10))
print(np.zeros(10))
print(np.full((2,5),5.0))

 

需要我们注意的是在用np.full语法进行填充后,在用np.empty 构造一个大小为 shape 的未初始化数组,会发现构造的函数还是用full语句创建后的内容,所以需要我们在创建完后进行初始化

 

          2、Create a 3x3 matrix with values ranging from 0 to 8 (★☆☆)')

                用0-8这9个数构造一个3x3大小的矩阵

对于这个问题有2种解法:所用到的语法如下

①np.arange().reshape(3,3)

②np.arange().reshape((3,-1))

x3=np.arange(0,9).reshape(3,3)
print(x3)

sample3 = np.arange(9).reshape((3, -1))
print(sample3)

 一开始看到第二个语法用时觉得很奇怪,对-1不是很了解,下面简单介绍一下reshape的性质:

reshape函数是对narray的数据结构进行维度变换,由于变换遵循对象元素个数不变,在进行变换时,假设一个数据对象narray的总元素个数为N,如果我们给出一个维度为(m,-1)时,我们就理解为将对象变换为一个二维矩阵,矩阵的第一维度大小为m,第二维度大小为N/m

所以说当为(3,-1)时也是满足的!

        3、Find indices of non-zero elements from [1,2,0,0,4,0] (★☆☆)')

                从数组[1,2,0,0,4,0]中找出非0元素的下标

对于这个问题有2种解法:所用到的语法如下

①利用循环嵌套语句

②直接利用自带语法

x3=np.array([1,2,0,0,4,0])
print(x3)
for i in range(len(x3)):
    if x3[i]!=0:
        print(i)
        
print(np.nonzero([1,2,0,0,4,0]))

 

在这里我犯了个大错,直接用惯性思维去使用循环嵌套语句去寻找非0元素。直接调用numpy中自带的语法就行了!!!希望小伙伴们不要犯和我一样的低级错误!!!

        4、Create a 3x3 identity matrix (★☆☆)')

                创建3x3的对角矩阵

对于这个问题有3种解法:所用到的语法如下

①np.identity

②np.eye

③np.diag

##“对角矩阵(diagonal matrix)是一个主对角线之外的元素皆为0的矩阵


# identity 只能创建方阵,eye要灵活一些,可以创建NxM的矩阵,也可以控制对角线的位置

print(np.identity(3))
print('-----------------------------------')
print(np.eye(3,3,0)) #默认第一个和第二个参数相等,第三个参数为对角线位置
np.diag([1,1,1])

 考研过去这么长时间,我都忘了什么是对角矩阵,研究生白考了!!在这里也给大家科普一下:

对角矩阵(diagonal matrix)是一个主对角线之外的元素皆为0的矩阵,常写为diag(a1,a2,...,an) 。对角矩阵可以认为是矩阵中最简单的一种,值得一提的是:对角线上的元素可以为 0 或其他值,对角线上元素相等的对角矩阵称为数量矩阵;对角线上元素全为1的对角矩阵称为单位矩阵。对角矩阵的运算包括和、差运算、数乘运算、同阶对角阵的乘积运算,且结果仍为对角阵。

  identity 只能创建方阵,eye要灵活一些,可以创建NxM的矩阵,也可以控制对角线的位置

所以博主的建议是我们要多使用eye函数可以灵活创建矩阵!!

        5、Create a 3x3x3 array with random values (★☆☆)')

                用随机数创建一个3x3x3的矩阵

x4=np.random.random((3,3,3))
x4

我们需要注意的是,可以直接使用random函数去调用不同类型

X=np.random.randint((3,3,3))
X

 我一开始用双random创建的浮点数,看着不是很整洁,于是我想用random.randint去创建整型的数组,发现创建的是一维数组。这个时候我们想要去创建整型数组,可以用ceil,floor函数去向上,向下取整!!

相关文章:

  • 《算法导论》12.3 插入和删除
  • C++与C的区别终于说清楚了!
  • 前端面试知识查漏补缺
  • WEIXIN day_02(8.17) 小程序的组件库
  • 社区交友源码 支持聊天私聊-礼物系统-直播系统-缘分匹配+搭建教程
  • Reactor 之 手把手教你 Spring Boot 整合 Reactor
  • 【42STL-函数对象使用详情】
  • LVS-Nat模式实战
  • java毕业设计基于的测试项目管理平台Mybatis+系统+数据库+调试部署
  • 对于钾,钙,锌,铁,钠,镁金属离子荧光探针的详细知识整理如下
  • Soft Actor-Critic(SAC算法)
  • C语言的头文件的处理
  • 使用 DM binary 部署 DM 集群
  • iOS小技能:RSA签名、验签、加密、解密的原理
  • 使用 Argon2 的 Java 密码散列
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • 30天自制操作系统-2
  • css属性的继承、初识值、计算值、当前值、应用值
  • Date型的使用
  • exif信息对照
  • JS+CSS实现数字滚动
  • Laravel5.4 Queues队列学习
  • linux学习笔记
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 理清楚Vue的结构
  • 微信开源mars源码分析1—上层samples分析
  • Hibernate主键生成策略及选择
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • #微信小程序:微信小程序常见的配置传旨
  • $.ajax()参数及用法
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (接口自动化)Python3操作MySQL数据库
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (十三)Maven插件解析运行机制
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • .equals()到底是什么意思?
  • .jks文件(JAVA KeyStore)
  • .NET Micro Framework初体验
  • .NET 常见的偏门问题
  • .NET 分布式技术比较
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • .net开发时的诡异问题,button的onclick事件无效
  • .NET与 java通用的3DES加密解密方法
  • ??如何把JavaScript脚本中的参数传到java代码段中
  • @cacheable 是否缓存成功_让我们来学习学习SpringCache分布式缓存,为什么用?
  • @Import注解详解
  • []利用定点式具实现:文件读取,完成不同进制之间的
  • [AIGC] MySQL存储引擎详解
  • [Android] Upload package to device fails #2720
  • [AX]AX2012开发新特性-禁止表或者表字段