Numpy理解
目录
我们再平常学习python和matlab中经常会看到一个词numpy,并且各大项目算法中都会涉及它,那究竟什么是numpy呢,我们今天就一起来看看吧
什么是numpy
numpy是由两个单词组成的——numerical、python,简单来看就是“数字python”,这样是不是就能很清楚的知道numpy是用来做python中有关于数值操作的呢。
其实呀,numpy就是一个功能强大的python库,提供了大量的库函数和操作,可以帮助我们轻松的进行数值运算,其中就包括:
- 机器学习:在编写相关算法时,需要用到例如矩阵乘法、加法和换位等运算,这时numpy就提供了用于简单编写代码并且快速计算的库。numpy数组就用于存储训练数据和机器学习模型的参数。
- 图像处理和计算机图形学:我们在学习matlab时就知道音频信号是一维的,用一些函数就能处理,但是图像确实多维度的,这时numpy就提供了一些非常优秀的库函数来快速处理图像。例如:镜像、旋转等。
- 数学任务:我们平时学习高数中的积分、微分等是不是觉得很头疼呢,但是numpy确实非常简单,并且会使得python替代matlab
numpy的安装
关于numpy最快速简单的安装方法就是在shell上使用
pip install numpy
但是如果你的pip不是最新版本21.1.1的话,是会下载失败的,查看pip版本用以下命令
pip show pip
######
Name: pip
Version: 21.1.1
Summary: The PyPA recommended tool for installing Python packages.
Home-page: https://pip.pypa.io/
Author: The pip developers
Author-email: distutils-sig@python.org
License: MIT
Location: d:\pythonproject\venv\lib\site-packages
Requires:
Required-by:
而更新pip则用如下命令
python -m pip install --upgrade pip
numpy数组
numpy数组是numpy提供的最重要的数据结构,他是python列表的扩展,但是却具备大量的函数和运算符,可以帮助我们快速编写各种复杂计算的代码。
定义numpy数组
import numpy as np # 给numpy定义一个别的名字np
sws_array = np.array([1, 2, 3, 4, 5])
print(sws_array)
我们这里先用as给numpy去一个缩写np,使得我们的代码更加简洁,再用import导入numpy库。然后我们创建了5个整数的numpy数组,最后将其打印出来。我们在自己的电脑上尝试的时候,一定一定一定要记得提前安装好numpy库噢!!!
numpy数组的相关功能
其实numpy数组和python列表基本没什么差别,python列表能完成的,numpy数组也能,例如
基本操作
import numpy as np # 给numpy定义一个别的名字np
sws_array = np.array([1, 2, 3, 4, 5])
print(sws_array)
print(sws_array.shape) #数组的长度
print(sws_array[0]) #打印索引为0的元素
sws_array[0] = -6 #修改索引为0的元素
print(sws_array[0])
以上代码,大家都可以自己在电脑上尝试一下,我就不一一举例了,我们主要来看看numpy的独特算法
0数组和1数组
import numpy as np # 给numpy定义一个别的名字np
sws_zeros_array = np.zeros(5)
print(sws_zeros_array)
sws_ones_array = np.ones(5)
print(sws_ones_array)
######
[0. 0. 0. 0. 0.]
[1. 1. 1. 1. 1.]
我们可以看到第二行用 np.zeros,第四行用np.ones就创建了相应的只含0,1的5个元素的数组,至于有没有其他的呢,大家可以自己动手试验一下
随机数组
我们玩腻了0和1,现在想玩点高难度的,好,满足你,我们来随机数组
import numpy as np # 给numpy定义一个别的名字np
sws_random_array = np.random.random(5)
print(sws_random_array)
######
[0.4732169 0.46246392 0.11748248 0.68879901 0.43405514]
我们可以看到这里就打印了5个随机数组,当然你们操作的时候可能会和我的不一样,因为是在0-1之间的随机数嘛,哈哈哈,如果一样的话,那慢蜗牛岂不是可以去买彩票了,如果大家不满足0-1的话,可以尝试*10等操作看看结果啦
二维数组
一维数组说完了,我们现在来看看二维数组(i,j),这里i表示了行数,j表示了列数
import numpy as np # 给numpy定义一个别的名字np
sws_2d_array = np.random.random((2, 3)) * 10
print(sws_2d_array)
######
[[9.50442357 1.3031723 9.3511404 ]
[3.44925167 2.25456602 2.27545946]]
sws_array = np.array([[1, 2], [6, 9]])
print(sws_array[1][0])
######
6
我们可以看到上面的相关操作,是不是觉得很熟悉呢,没错啦,和我们C语言中的二维数组就是一模一样的操作啦,哈哈哈哈
那我们现在来看看numpy特有的二维数组的操作
如果我们想以此输出某个列或者行的所有元素怎么办呢,这里就可以用到我们的冒号啦
sws_array_lie_0 = sws_array[:, 1]
print(sws_array_lie_0)
######
[2 9]
我们这里是选择打印索引为1的列的所有元素,大家可以尝试一下打印行哈
numpy的数组操作
不知道大家有没有学过线性代数呢,大家在面对矩阵的相乘等操作时,是不是头疼欲裂呢,不要着急,慢蜗牛教程在手,天下我有,一起来看看下面的例子吧
import numpy as np
sws_1 = np.array([[1.0, 2.0], [3.0, 4.0]])
sws_2 = np.array([[5.0, 6.0], [7.0, 8.0]])
sum_0 = sws_1 + sws_2
subtract = sws_1 - sws_2
multiply = sws_1 * sws_2
division = sws_1 / sws_2
print('sum_0=\n', sum_0)
print('subtract=\n', subtract)
print('multiply=\n', multiply)
print('division=\n', division)
######
sum_0=
[[ 6. 8.]
[10. 12.]]
subtract=
[[-4. -4.]
[-4. -4.]]
multiply=
[[ 5. 12.]
[21. 32.]]
division=
[[0.2 0.33333333]
[0.42857143 0.5 ]]
我们可以观察到,打印的结果都是对应索引的元素进行相关操作,如果要进行矩阵乘法,我们还需要加一点料
matrix_multiply = sws_1.dot(sws_2)
print(matrix_multiply)
######
[[19. 22.]
[43. 50.]]
Numpy理解的更多相关文章
- 深入理解numpy
一.为啥需要numpy python虽然说注重优雅简洁,但它终究是需要考虑效率的.别说运行速度不是瓶颈,在科学计算中运行速度就是瓶颈. python的列表,跟java一样,其实只是一维列表.一维列表相 ...
- 对NumPy中dot()函数的理解
今天学习到numpy基本的运算方法,遇到了一个让我比较难理解的问题.就是dot函数是如何对矩阵进行运算的. 一.dot()的使用 参考文档:https://docs.scipy.org/doc/num ...
- [开发技巧]·Numpy广播机制的深入理解与应用
[开发技巧]·Numpy广播机制的深入理解与应用 1.问题描述 我们在使用Numpy进行数据的处理时,经常会用到广播机制来简化操作,例如在所有元素都加上一个数,或者在某些纬度上作相同的操作.广播机制很 ...
- [开发技巧]·Numpy中对axis的理解与应用
[开发技巧]·Numpy中对axis的理解与应用 1.问题描述 在使用Numpy时我们经常要对Array进行操作,如果需要针对Array的某一个纬度进行操作时,就会用到axis参数. 一般的教程都是针 ...
- 对numpy中shape的理解
from:http://blog.csdn.net/by_study/article/details/67633593 环境:Windows, Python3.5 一维情况: >>> ...
- 1.理解Numpy、pandas
之前一直做得只是采集数据,而没有再做后期对数据的处理分析工作,自己也是有意愿去往这些方向学习的,最近就在慢慢的接触. 首先简单理解一下numpy和pandas:一.NumPy:1.NumPy是高性能计 ...
- numpy中的convolve的理解
https://blog.csdn.net/u011599639/article/details/76254442 函数 numpy.convolve(a, v, mode=‘full’),这是num ...
- 对Numpy数组按axis运算的理解
Python的Numpy数组运算中,有时会出现按axis进行运算的情况,如 >>> x = np.array([[1, 1], [2, 2]]) >>> x arr ...
- numpy.meshgrid()理解
本文的目的是记录meshgrid()的理解过程: step1. 通过一个示例引入创建网格点矩阵; step2. 基于步骤1,说明meshgrid()的作用; step3. 详细解读meshgrid() ...
- 理解-NumPy
# 理解 NumPy 在这篇文章中,我们将介绍使用NumPy的基础知识,NumPy是一个功能强大的Python库,允许更高级的数据操作和数学计算. # 什么是 NumPy? NumPy是一个功能强大的 ...
随机推荐
- quarkus依赖注入之七:生命周期回调
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本篇的知识点是bean的生命周期回调:在be ...
- 牛客小白月赛65 D题 题解
原题链接 题意描述 一共有两堆石子,第一堆有 \(a\) 个,第二堆有 \(b\) 个,牛牛和牛妹轮流取石子,牛牛先手,每次取石子的时候只能从以下 \(2\) 种方案种挑一种来取(对于选择的方案数必须 ...
- Python | 函数、数据容器
1.函数 函数:是组织好的,可重复使用的,用来实现特定功能的代码段. 1.1 简单案例 重复使用计算字符串的长度 str1 = "heystar" str2 = "pyt ...
- 质量管理 | QC、QA、QM,去QA化与降本增效
现在国内职业的质量管理都是从 CMMI 和 ISO 质量体系演化过来的,但是能做真正的质量管理的公司很少.质量管理的 QC 偏测试,对最终的产品负责:QA 偏过程,从过程把控质量:QM 偏体系,类似于 ...
- 日志开源组件(六)Adaptive Sampling 自适应采样
业务背景 有时候日志的信息比较多,怎么样才可以让系统做到自适应采样呢? 拓展阅读 日志开源组件(一)java 注解结合 spring aop 实现自动输出日志 日志开源组件(二)java 注解结合 s ...
- API数据接口的应用步骤
API(Application Programming Interface)是现代软件应用程序开发中的一项重要技术,它允许不同的应用程序之间进行通信和数据交换.API接口通过提供统一的访问点,使得应用 ...
- dotnet SemanticKernel 入门 自定义变量和技能
本文将告诉大家如何在 SemanticKernel 框架内定义自定义的变量和如何开发自定义的技能 本文属于 SemanticKernel 入门系列博客,更多博客内容请参阅我的 博客导航 自定义变量是一 ...
- 【算法】湖心岛上的数学梦--用c#实现一元多次方程的展开式
每天清晨,当第一缕阳光洒在湖面上,一个身影便会出现在湖心小岛上.她坐在一块大石头上,周围被茂盛的植物环绕,安静地沉浸在数学的世界中. 这个姑娘叫小悦,她的故事在这个美丽的湖心小岛上展开.每天早晨,她都 ...
- 领域驱动模型DDD(四)——Eventuate Tram Saga源码讲解
前言 虽然本人一直抱怨<微服务架构设计模式>中DDD模式下采用的Eventuate Tram Saga不算简单易用,但是为了更加深入了解原文作者的设计思路,还是花了点时间去阅读源码,并且为 ...
- k8s添加节点报[WARNING SystemVerification]: missing optional cgroups: blkio
环境信息: ubuntu-master01 192.1681.195.128 ubuntu-work01 192.168.195.129 k8s版本 1.25.2 背景描述:初始环境是一个ma ...