Numpy练习题-锻炼手写机器学习模型的能力

numpy 基础习题 1. 求数组的内存大小 答: 阅读详情

Numpy是一个用python实现的科学计算的扩展程序库,包括:

1、一个强大的N维数组对象Array;

2、比较成熟的(广播)函数库;

3、用于整合C/C++和Fortran代码的工具包;

4、实用的线性代数、傅里叶变换和随机数生成函数。numpy和稀疏矩阵运算包scipy配合使用更加方便。

NumPy(Numeric Python)提供了许多高级的数值编程工具,如:矩阵数据类型、矢量处理,以及精密的运算库。专为进行严格的数字处理而产生。多为很多大型金融公司使用,以及核心的科学计算组织如:Lawrence Livermore,NASA用其处理一些本来使用C++,Fortran或Matlab等所做的任务。

本文整理了一个Numpy的练习题,总结了Numpy的常用操作,可以测试下自己对Numpy的掌握程度,有答案哦。 

下载地址:

https://github.com/fengdu78/Data-Science-Notes/tree/master/2.numpy/numpy_exercises

试题目录

  • Array creation routines(数组创建)

  • Array manipulation routines(数组操作)

  • String operations(字符串操作)

  • Numpy-specific help functions(Numpy特定帮助函数)

  • Input and output(输入和输出)

  • Linear algebra(线性代数)

  • Discrete Fourier Transform(离散傅里叶变换)

  • Logic functions(逻辑函数)

  • Mathematical functions(数学函数)

  • Random sampling (numpy.random)(随机抽样)

  • Set routines(集合操作)

  • Sorting, searching, and counting(排序、搜索和计数)

  • Statistics(统计)

试题内容

试题分为13个练习,每个练习分为两个ipynb文件,文件名带_Solutions 的是带答案的文件,建议初学者先练习下不带答案的文件,做不出来再看看答案。

试题样例

Linear algebra

import numpy as np
np.__version__
'1.11.2'

Matrix and vector products

Q1. Predict the results of the following code.

x = [1,2]
y = [[4, 1], [2, 2]]
print np.dot(x, y)
print np.dot(y, x)
print np.matmul(x, y)
print np.inner(x, y)
print np.inner(y, x)
[8 5]
[6 6]
[8 5]
[6 6]
[6 6]

Q2. Predict the results of the following code.

x = [[1, 0], [0, 1]]
y = [[4, 1], [2, 2], [1, 1]]
print np.dot(y, x)
print np.matmul(y, x)

[[4 1]
 [2 2]
 [1 1]]
[[4 1]
 [2 2]
 [1 1]]

Q3. Predict the results of the following code.

x = np.array([[1, 4], [5, 6]])
y = np.array([[4, 1], [2, 2]])
print np.vdot(x, y)
print np.vdot(y, x)
print np.dot(x.flatten(), y.flatten())
print np.inner(x.flatten(), y.flatten())
print (x*y).sum()
30
30
30
30
30

Q4. Predict the results of the following code.

x = np.array(['a', 'b'], dtype=object)
y = np.array([1, 2])
print np.inner(x, y)
print np.inner(y, x)
print np.outer(x, y)
print np.outer(y, x)
abb
abb
[['a' 'aa']
 ['b' 'bb']]
[['a' 'b']
 ['aa' 'bb']]

Decompositions

Q5. Get the lower-trianglular L in the Cholesky decomposition of x and verify it.

x = np.array([[4, 12, -16], [12, 37, -43], [-16, -43, 98]], dtype=np.int32)
L = np.linalg.cholesky(x)
print L
assert np.array_equal(np.dot(L, L.T.conjugate()), x)
[[ 2.  0.  0.]
 [ 6.  1.  0.]
 [-8.  5.  3.]]

Q6. Compute the qr factorization of x and verify it.

x = np.array([[12, -51, 4], [6, 167, -68], [-4, 24, -41]], dtype=np.float32)
q, r = np.linalg.qr(x)
print "q=\n", q, "\nr=\n", r
assert np.allclose(np.dot(q, r), x)
q=
[[-0.85714287  0.39428571  0.33142856]
 [-0.42857143 -0.90285712 -0.03428571]
 [ 0.2857143  -0.17142858  0.94285715]] 
r=
[[ -14.  -21.   14.]
 [   0. -175.   70.]
 [   0.    0.  -35.]]

Q7. Factor x by Singular Value Decomposition and verify it.

x = np.array([[1, 0, 0, 0, 2], [0, 0, 3, 0, 0], [0, 0, 0, 0, 0], [0, 2, 0, 0, 0]], dtype=np.float32)
U, s, V = np.linalg.svd(x, full_matrices=False)
print "U=\n", U, "\ns=\n", s, "\nV=\n", v
assert np.allclose(np.dot(U, np.dot(np.diag(s), V)), x)

U=
[[ 0.  1.  0.  0.]
 [ 1.  0.  0.  0.]
 [ 0.  0.  0. -1.]
 [ 0.  0.  1.  0.]] 
s=
[ 3.          2.23606801  2.          0.        ] 
V=
[[ 1.  0.  0.]
 [ 0.  1.  0.]
 [ 0.  0.  1.]]

Matrix eigenvalues

Q8. Compute the eigenvalues and right eigenvectors of x. (Name them eigenvals and eigenvecs, respectively)

x = np.diag((1, 2, 3))
eigenvals = np.linalg.eig(x)[0]
eigenvals_ = np.linalg.eigvals(x)
assert np.array_equal(eigenvals, eigenvals_)
print "eigenvalues are\n", eigenvals
eigenvecs = np.linalg.eig(x)[1]
print "eigenvectors are\n", eigenvecs
eigenvalues are
[ 1.  2.  3.]
eigenvectors are
[[ 1.  0.  0.]
 [ 0.  1.  0.]
 [ 0.  0.  1.]]

Q9. Predict the results of the following code.

print np.array_equal(np.dot(x, eigenvecs), eigenvals * eigenvecs)
True

Norms and other numbers

Q10. Calculate the Frobenius norm and the condition number of x.

x = np.arange(1, 10).reshape((3, 3))
print np.linalg.norm(x, 'fro')
print np.linalg.cond(x, 'fro')
16.8819430161
4.56177073661e+17

Q11. Calculate the determinant of x.

x = np.arange(1, 5).reshape((2, 2))
out1 = np.linalg.det(x)
out2 = x[0, 0] * x[1, 1] - x[0, 1] * x[1, 0]
assert np.allclose(out1, out2)
print out1
-2.0

Q12. Calculate the rank of x.

x = np.eye(4)
out1 = np.linalg.matrix_rank(x)
out2 = np.linalg.svd(x)[1].size
assert out1 == out2
print out1

4

Q13. Compute the sign and natural logarithm of the determinant of x.

x = np.arange(1, 5).reshape((2, 2))
sign, logdet = np.linalg.slogdet(x)
det = np.linalg.det(x)
assert sign == np.sign(det)
assert logdet == np.log(np.abs(det))
print sign, logdet

-1.0 0.69314718056

Q14. Return the sum along the diagonal of x.

x = np.eye(4)
out1 = np.trace(x)
out2 = x.diagonal().sum()
assert out1 == out2
print out1
4.0

Solving equations and inverting matrices

Q15. Compute the inverse of x.

x = np.array([[1., 2.], [3., 4.]])
out1 = np.linalg.inv(x)
assert np.allclose(np.dot(x, out1), np.eye(2))
print out1

[[-2.   1. ]
 [ 1.5 -0.5]]
  • 参考

  • 作者:Kyubyong

  • 来源:https://github.com/Kyubyong/numpy_exercises

下载地址:

https://github.com/fengdu78/Data-Science-Notes/tree/master/2.numpy/numpy_exercises

文末福利


各位猿们,还在为记不住API发愁吗,哈哈哈,最近发现了国外大师整理了一份Python代码速查表和Pycharm快捷键sheet,火爆国外,这里分享给大家。


这个是一份Python代码速查表



下面的宝藏图片是2张(windows && Mac)高清的PyCharm快捷键一览图



怎样获取呢?可以添加我们的AI派团队的程序媛姐姐
一定要备注【高清图】哦
????????????????????

➕我们的程序媛小姐姐微信要记得备注【高清图】哦
来都来了,喜欢的话就请分享、点赞、在看三连再走吧~~~


基于Python卷积神经网络的Mnist手写数字识别 一、项目背景与意义手写数字识别是机器学习和计算机视觉领域中的一个经典问题。Mnist数据集是一个包含大量手写数字图片的数据集,被广泛用于训练和测试各种图像识别算法。使用卷积神经网络(Convolutional Neural Network,简称CNN)来解决手写数字识别问题,不仅可以提高识别的准确率,还能深入理解卷积神经网络在图像识别方面的应用。二、项目目标。 阅读详情

相关推荐

彻底告别机器学习迷茫!《100天机器学习代码实践》带你从小白到高阶,代码实战保姆级教程,让你直通AI高薪

《100 Days Of ML Code》是一个GitHub热门项目,通过100天系统化学习路径帮助机器学习爱好者克服常见学习障碍。项目特色包括:1)每日小目标培养学习习惯;2)"Code-First"理念确保每个知识点都有配套代码实践;3)循序渐进的内容设计,涵盖Python基础、经典算法到深度学习。项目通过明确任务、打卡机制和社区支持解决学习动力不足问题,并提供丰富实战案例(如数据预处理、模型构建等),让学习者在实践中掌握核心技能。完成100天学习后,学习者将积累完整项目经验,构建专

wylee的博客 914

机器学习——numpy

numpy专门针对ndarray的操作和运算进行了设计,所以该类型的存储效率和输入输出性能远优于Python中的嵌套列表,数组越大,Numpy的优势就越明显。 从现有数组中生成 生成固定范围的数组 正态分布 正态分布是具有两个参数μ和σ的连续型随机变量的分布,第一参数μ是服从正态分布的随机变量的均值,第二个参数σ是此随机变量的方差,所以正态分布记作N(μ,σ )。 其中μ决定了其位置,其标准差σ决定了分布的胖瘦。且当μ = 0,σ = 1时的正态分布是标准正态分布。 σ越小分布则越瘦高,σ越大

胡图图不糊涂的博客 1461

机器学习12(Scikit-Learn)

Scikit-Learn 算法库的基本使用

Roy_Allen的博客 1072

这100道练习,带你玩转Numpy

DatawhaleDatawhale,和鲸社区编辑Numpy是Python做数据分析所必须要掌握的基础库之一。以下为入门Numpy的100题小练习,原为github上的开源项目,由和鲸社...

Datawhale 2285

手写数字识别如何支撑文档数字化应用

Kaggle的“Digit Recognizer”竞赛基于MNIST手写数字数据集,是计算机视觉领域的经典入门任务。该竞赛要求构建模型准确识别0-9的手写数字,适合学习图像分类全流程,包括数据理解、模型构建与评估。数据集为28×28像素的灰度图像,以表格形式提供,便于快速实验。 解题思路包括: 规则方法:基于像素统计特征,简单但准确率低。 传统机器学习(如SVM、随机森林):适合建立基线模型,准确率可达95%+。 全连接神经网络:端到端训练,准确率98%+,但忽略空间结构。 卷积神经网络(CNN):最

Mr数据杨 408

Python习题集(含答案)

Python100经典练习题原题,和Python100经典练习题答案,不容错过,修炼一番,定能成为Python高手

从零手写机器学习算法:NumPy纯实现指南

机器学习算法本质是数学原理的程序化表达,其核心在于参数更新、梯度计算与数值稳定性等底层机制。理解线性回归的梯度下降、决策树的信息增益、神经网络的反向传播等概念,需穿透scikit-learn等封装库,直面矩阵运算、张量形状匹配与浮点精度控制等工程细节。这种‘白盒实现’不仅强化数学直觉,更培养对过拟合、梯度爆炸、维度不匹配等典型问题的调试敏感度,广泛应用于算法岗面试准备、嵌入式模型轻量化改造及教学演示等真实场景。

weixin_33910460的博客 513

numpy的100道金典题

关于NUMpy学习相关练习资料,针对与numpy的基本离开练习

Python实战:用NumPy手写最小二乘法线性回归(附完整代码)

本文通过Python和NumPy从零实现最小二乘法线性回归,深入解析其数学原理与矩阵求解过程。文章提供了完整的代码示例,涵盖从简单线性回归到多元及多项式回归的实战应用,并探讨了模型评估、数值稳定性及局限性,是理解机器学习基础算法的绝佳实践。

alice7model的博客 872

Python-pandas基础习题与答案

Python中的pandas与matplotlib,numpy等库进行数据分析的一些基础代码。

100道numpy练习题

文件为github上著名的100道numpy练习题,增加了pdf格式,便于打印和在移动设备上查看。

Python机器学习入门

同时,Python拥有如NumPy、Pandas、Scikit-learn等专为数据科学设计的核心库,这些工具提供了开箱即用的机器学习算法和数据处理功能,让用户无需从零开始实现复杂数学公式。此外,Python社区的活跃度极高,任何技术问题都能快速获得解答,丰富的学习资源和文档进一步加速了初学者的成长过程。模型部署时可选择Flask或Django构建API接口,使用Docker容器化技术保证环境一致性,并通过监控系统持续跟踪模型性能衰减情况,定期重新训练模型以适应数据分布变化。

qq_40003376的博客 269

STM32 HAL库定时器中断里读编码器速度准吗?聊聊MG310电机的测速与防溢出处理

本文探讨了STM32 HAL库在定时器中断中读取编码器速度的精度问题,特别针对MG310电机的测速与防溢出处理提供了解决方案。通过对比定时中断法和编码器模式的性能,揭示了硬件编码器接口在降低误差和CPU占用率方面的优势,并详细介绍了CubeMX配置技巧和防溢出处理的工程实践。

weixin_28720767的博客 401

健身房会员锻炼数据可视化分析实战教学

通过对健身房会员锻炼数据的可视化分析,我们得到了以下结论:男性会员略多于女性会员。随着年龄的增长,最大心率呈现下降趋势。不同年龄段的卡路里消耗量存在波动,但总体趋势不明显。经验水平较高的会员在锻炼时消耗的卡路里更多。不同年龄段的平均体重存在差异,全体平均体重约为74.10 kg。46-60岁年龄段的会员最多。体重分布较为均匀。饮水量与卡路里消耗量之间存在一定的正相关关系。锻炼频率较高的会员心率指标也较高。运动时长与能量消耗之间存在明显的正相关关系。

xunoo的博客 805

ESP32-CAM入门教程

ArduinoESP32-CAM下载模块(接上USB就能用,很方便,如果没有买就只有资金用USB-TTL了)如下图两个合在一起如下图。

qq_48778364的博客 3万+

HDMI设计6--Video PHY Controller IP

Reference:https://china.xilinx.com/content/dam/xilinx/support/documentation/ip_documentation/vid_phy_controller/v2_2/pg230-vid-phy-controller.pdf 1. 序 Video PHY Controller IP是为实现与视频(DisplayPort和HDMI™技术)MAC传输或接收子系统的即插即用连接而设计的。视频MAC层和PHY层的接口是标准化的,能...

Archar_Saber的博客 8342

机器学习实战python环境搭建以及numpy和matplotlib安装遇到的各种问题(一)

第一次在大神云集的优快云写博客,以前都是在新浪上随便写一写,当作平时的遇到的一些问题的总结。 自己从这里学到了很多知识,也解决了很多问题。 自学的时候会遇到很多问题,由于没有时间系统的学习知识,都是遇到什么问题就查什么,所以多去动手查资料还是很重要的。 学习的过程就是需要不断的去发现问题,解决问题。再次声明自己也是新手,遇到的一些问题在大牛看来都不值一提,所以在网上也经常找不到解决的办法,其

XD_Senior的博客 2513

FPGA之道(22)VHDL基本程序框架

在介绍详细的VHDL语法之前,让我们先来了解一下VHDL代码的基本程序框架,这样可以让我们先对VHDL程序设计有一个整体的概念把握,进而在后续的VHDL语法学习中做到有的放矢。

Reborn Lee 8309

用Python验证拉格朗日矢量公式:NumPy手写叉乘与矩阵推导对比

本文通过Python的NumPy库详细验证了拉格朗日矢量公式,对比了手写叉乘与矩阵推导两种方法的实现。文章不仅展示了基础叉乘运算和反对称矩阵的构建,还探讨了数值稳定性、批量计算优化及GPU加速方案,为数据科学和机器学习领域的向量运算提供了实用参考。

weixin_30689307的博客 414

【CTFSHOW】web入门 黑盒测试

文章目录写在前面web380web381web382web383web384web385web386web387web388web389web390web391web392web393web394web395参考资料 写在前面 一直没搞过渗透,先学学黑盒测试吧 web380 进入题目发现是一个关于灯泡的悲伤故事,点进去,看到跳转到page_1.php页面。 我们访问page.php试试: 发现报错:$id.php,可以猜想需要传名称为id的参数,来访问id.php。我们访问page.php?id=1试试

7ruth0hn的博客 1898

【数字逻辑电路课程设计】多功能数码管时钟VHDL+quartus II-EP1C12F324C8+源码+付费资源

我希望需要我这篇文章的是正常学习数字逻辑课程且正在设计数码管时钟的同学。我个人不推荐直接获取源代码,因此我另有一份付费资源是完整源代码;我推荐各位去研究我代码的逻辑尝试自己书写属于自己的代码,因此我保留了注释但隐去了变量。由于时间有限,我的设计不够完美,仍有很多缺陷,我将我的展望写在后面,各位可以尝试实现。我不为难同学,作为同学我理解各位设计的辛苦,因此如果有需要,私信我提供隐去敏感信息的学生证照片可直接获取源代码。

WannaFlysyx的博客 1535

机器学习学习路径的逆向工程:从认知断层到能力跃迁

机器学习不是知识堆砌,而是认知结构的持续重构。理解其本质需超越公式推导与代码实现,直面‘学了不会用’‘调参靠运气’等普遍困境——这背后是符号到代码、理论假设到现实数据、评估指标到业务目标的三重断层。通过知识图谱压缩与实践优先原则,可将六年经验凝练为可定位、可验证的能力跃迁节点,如数据具象化、损失函数人格化、超参数敏感度分析等。这些方法已在金融风控、电商推荐、医疗诊断等真实场景中验证有效,帮助学习者跨越从学术理解到工程落地的关键鸿沟。

Dendy之Java小屋 426

漫画安全HIDS、EDR、NDR、XDR

漫画安全HIDS、EDR、NDR、XDR

墨痕诉清风的博客 3447

Gamdl 教程:3 步把 Apple Music 歌曲与音乐视频下载到本地

你肯定遇到过这种情况:Apple Music 里看到一首想长期收藏的歌、一支想反复看的高清 MV,但订阅一旦中断,这些内容就全没了。官方离线模式又无法让你把它们放进自己的音乐库统一管理。 Gamdl(Glomatico's Apple Music Downloader)是一个开源命令行工具,专门用来下载 Apple Music 的歌曲、音乐视频和发布视频。在浏览器里把歌曲链接复制出来,在终端执行

gitblog_00012的博客 470

如何在 SAPGUI 里显示上传到 ABAP 服务器的 PDF 文件

在 SAPGUI 里显示 PDF 文件是实际项目中一个很有用的需求。因为在 SAP 实际业务场景中,有大量的流程会生成 PDF 格式的数据。把这种类型的数据输出显示在 SAPGUI 里,方便最终用户查看。本教程后续步骤,还会向大家介绍如何使用 ABAP 代码生成 PDF 格式的数据。本步骤只是简单的将本地 PDF 文件,上传到 ABAP 系统并显示在 SAPGUI 里。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2688

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

上一篇: 字节跳动《算法中文手册》火了,完整版 PDF 开放下载!
下一篇: 可解释机器学习发展和常见方法!
Wang_AI
博客等级 码龄12年 996粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值