python中NumPy的安装与基本操作
作者:沉睡中的主角 发布时间:2023-08-27 03:03:53
Numpy是什么
很简单,Numpy是Python的一个科学计算的库,提供了矩阵运算的功能,其一般与Scipy、matplotlib一起使用。其实,list已经提供了类似于矩阵的表示形式,不过numpy为我们提供了更多的函数。如果接触过matlab、scilab,那么numpy很好入手。
NumPy是一个高性能的科学计算和数据分析基础包。
NumPy的安装
NumPy的安装相对简单,我们可以通过Anaconda中的命令进行安装,也可以通过“pip install numpy" 语句对NumPy进行安装。如果需要验证NumPy是否安装成功,则可以在NumPy安装完成后通过输入“import numpy"后运行,看看是否输出报错提示。
多维数组
创建多维数组
import numpy as np
#用array来创建
a=np.array([1,2,3]) #创建一维数组
print(a)
b=np.array([[1,2,3],[4,5,6]]) #创建高维数组
print(b)
#使用NumPy中的ones创建维度指定且元素全是1的数组
c=np.ones([2,3]) #全是1的数组
print(c)
c[1,2]=3 #对数组中的元素进行覆盖
print(c)
#创建维度制定且元素全为0的数组
d=np.zeros([2,3])
print(d)
#创建维度指定且元素全为随机数的数组
e=np.empty([2,3])
print(e)
多维数组的常用属性
ndim:返回统计的数组维数,即维度的数量
#创建维度指定且元素全为随机数的数组
e=np.empty([2,3])
print(e)
print(e.ndim)
结果:
[[0. 0. 0.]
[0. 0. 0.]]
2
shape:返回数组的维度值,对返回的结果使用一个数据类型为整型的元组来表示,比如一个二维数组返回的结果为(n,m),那么n和m表示数组中对应维度的数据的长度。如果使用shape输出的是矩阵的维度,那么在输出的(n,m) 中,n表示矩阵的行,m表示矩阵的列。
#创建维度指定且元素全为随机数的数组
e=np.empty([2,3])
print(e)
print(e.shape)
结果:
[[0. 0. 0.]
[0. 0. 0.]]
(2, 3)
size:返回要统计的数组中的元素的总数量
#创建维度指定且元素全为随机数的数组
e=np.empty([2,3])
print(e)
print(e.size)
结果:
[[0. 0. 0.]
[0. 0. 0.]]
6
dtype:返回数组中的元素的数据类型。不过其显示的数据类型和我们之前定义的变量的数据类型名有所区别,因为这些数据类型都是使用NumPy 进行定义的,而在NumPy中表示数据类型使用的是numpy.int32、numpy.int16和numpy.float64这类格式的名字
#创建维度指定且元素全为随机数的数组
e=np.empty([2,3])
print(e)
print(e.dtype)
结果:
[[0. 0. 0.]
[0. 0. 0.]]
float64
多维数组的基本操作
数组的算术运算
数组能够直接进行加法、减法、乘法和除法算术运算
import numpy as np
g=np.array([1,2,3])
h=np.array([4,5,6])
print("a-b-",a-b) #打印a-b的结果
print("a+b =",a+b) #打印a+b的结果
print("a/b =",a/b) #打印a/b的结果
print("a*b =",a*b) #打印a*b的结果
结果:
a-b- [-3 -3 -3]
a+b = [5 7 9]
a/b = [0.25 0.4 0.5 ]
a*b = [ 4 10 18]
Process finished with exit code 0
从上面的实例可以看出,虽然数组在构造上类似于矩阵,但是其运算和之前介绍的矩阵运算存在诸多不同:首先,矩阵是不存在除法运算的,但是数组能够进行除法运算:其次,数组的乘法运算机制是通过将位置对应的元素相乘来完成的,和矩阵的乘法运算机制不同。下面来看看如何通过数组实现矩阵乘法运算。
a=np.array([1,2,3])
b=np.array([4,5,6])
print("a-b-",a-b) #打印a-b的结果
print("a+b =",a+b) #打印a+b的结果
print("a/b =",a/b) #打印a/b的结果
print("a*b =",a*b) #打印a*b的结果
c = a.dot(b)
print("Matrix1: a*b =",c) #打印a*b的结果
d = np.dot(a,b)
print("Matrix2: a*b",c) #打印a*b的结果在运行后,输出的内容
结果:
a-b= [-3 -3 -3]
a+b = [5 7 9]
a/b = [0.25 0.4 0.5 ]
a*b = [ 4 10 18]
Matrix1: a*b = 32
Matrix2: a*b 32
Process finished with exit code 0
在以上代码中使用了两种方法来实现矩阵的乘法运算,其计算结果是一样的。数组和矩阵的算术运算还有一个较大的不同点,就是数组可以直接和标量进行算术运算,但是在矩阵运算中是不可以的。
a = np.array([1,2,3])
print ("a * 2 =",a*2)
print("a 1 2 =",a/2)
print("a - 2 =",a-2)
print("a + 2 =",a+2)
结果:
a * 2 = [2 4 6]
a 1 2 = [0.5 1. 1.5]
a - 2 = [-1 0 1]
a + 2 = [3 4 5]
数组的自身运算
(1)min:默认找出数组的所有元素中值最小的元素,可以通过设置axis的值来按行或者列查找元素中的最小值。
(2) max:默认找出数组的所有元素中值最大的元素,可以通过设置axis的值来按行或者列查找元素中的最大值。
(3) sum:默认对数组中的所有元素进行求和运算,并返回运算结果,同样可以通过设置axis的值来按行或者列对元素进行求和运算。
(4) exp:对数组中的所有元素进行指数运算。
(5) sqrt: 对数组中的所有元素进行平方根运算。
(6) square:对数组中的所有元素进行平方运算。
随机数组
生成随机数在我们平时的应用中是很有用的,在NumPy中有许多方法可以生成不同属性的随机数,以满足在计算中使用随机数字的需求。
(1) seed: 随机因子,在随机数生成器的随机因子被确定后,无论我们运行多少次随机程序,最后生成的数字都是一样的,随机因子更像把随机的过程变成一种 伪随机的机制,不过这有利于结果的复现。
(2) rand: 生成一个在[0,1)范围内满足均匀分布的随机样本数。
(3) randn:生成一个满足平均值为0且方差为1的正太分布随机样本数。
(4)randint:在给定的范围内生成类型为整数的随机样本数。
(5) binomial: 生成-个维度指定且满足二项分布的随机样本数。
(6) beta:生成一个指定维度且满足beta分布的随机样本数。
(7) normal: 生成一个指定维度且满足高斯正太分布的随机样本数。
索引、切片、迭代
在数组中也有索引、切片和迭代,其操作过程和列表类似,不过多维数组相较于一维数组,在索引、切片和迭代等操作上会更复杂。
a = np.arange(10)
print(a) #输出整个数组
print(a[:5]) #输出数组的前 五个元素
for i in a: #迭代输出数组的全部元素
print (i)
结果:
[0 1 2 3 4 5 6 7 8 9]
[0 1 2 3 4]
0
1
2
3
4
5
6
7
8
9
Process finished with exit code 0
来源:https://blog.csdn.net/ggj0727/article/details/116484987
猜你喜欢
- 上文:栅格:从混乱到秩序Jacci Howard Bear 的英文原文:http://desktoppub.about.com/od/gri
- 0x00 字符的编码计算机毕竟是西方国家的发明,最开始并没有想到会普及到全世界,只用一个字节中的7位(ASCII)来表示字符对于现在庞大的文
- slice(切片)是 go 里面非常常用的一种数据结构,它代表了一个变长的序列,序列中的每个元素都有相同的数据类型。 一个 slice 类型
- php 如何获取请求的xml数据,对方通过http协议post提交过来xml数据,php如何获取到这些数据呢?<?php $xml_d
- 在 ASP 的内建对象中除了用于发送、接收和处理数据的对象外,还有一些非常实用的代表 Active Server 应用程序和单个
- 前言接口在面向对象编程中是经常使用的招式,也是体现多态很重要的手段。是的。Golang中也有接口这玩意儿。1.为什么需要接口?多数情况下,数
- Updates(2019.8.14 19:53)吃饭前用这个方法实战了一下,吃完回来一看好像不太行:跑完一组参数之后,到跑下一组参数时好像没
- 本文实例讲述了Python 异常的捕获、异常的传递与主动抛出异常操作。分享给大家供大家参考,具体如下:异常的捕获demo.py(异常的捕获)
- 前言HTML 5如同一场革命,正在Web2.0后时代轰轰烈烈的进行着。HTML 5是什么,无须我在这里赘述了。对于HTML 5的革新,按我的
- 概述迭代器是访问集合元素的一种方式。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。延迟计算或惰性
- 1. DID(Differences-in-Differences)定义双重差分法,其主要被用于社会学中的政策效果评估。这种方法需要两个「差
- 这里所谓的复杂表单,是指表单中包含多种不同的输入类型,比如下拉列表框、单行文本、多行文本、数值等。在经常需要更换这类表单的场合,需要有一个表
- 如何制作一个文本文件编辑器?我们也来做一个:newdoc.asp<%@ Language=VBScript %&g
- 本文通过Python3+PyQt5实现自定义部件–分数滑块。它既能支持键盘也支持鼠标,使用物理(视口)坐标通过绘制方式显示。#!/usr/b
- 废话不多说了,直接给大家贴代码了,具体代码如下所示:<!DOCTYPE html> <html> <head&
- 首先,建一个文件夹,把你要隐藏的文件放在里面,你的所有黑客程序什么的。假设你建的文件夹叫hacker然后呢,我们给这个文件夹加个扩展名(后缀
- matplotlib是功能十分强大的绘制二维图形的Python模块,它用Python语言实现了MATLAB画图函数的易用性,同时又有非常强大
- 历时半年,我独自一人完成了一个局级单位的管理信息系统,共发布BETA版29次,正式版本3次。ASP+ORACLE环境,285个ASP文件,功
- 如何验证日期输入是否正确?我们可以利用ASP 3.0里的On Error Resume Next来完成这项功能:<%Option&nb
- 1. auth介绍Django 自带一个用户验证系统。它负责处理用户账号、组、权限和基于cookie的用户会话。认证系统由以下部分