一、认识Numpy
NumPy,更像是一个魔方(见图),它是Python数组计算、矩阵运算和科学计算的核心库,NumPy这个词来源于Numerical 和 Python 两个单词。NumPy提供了一个商性能的数组对象。让我们轻松创建一维数组、二维数组和多维数组,以及大量的函数和方法,帮助我们轻松地进行数组计算,从而广泛地应用于数据分析、机器学习、图像处理和计算机图形学、数学任务等领域当中。
NumPy的用途是以数组的形式对数据进行操作。机器学习中充斥了大量的数组运算,而NumPy使得这些操作变得简单!由于NumPy是C语言实现的,所以其运算速度非常快。具体功能如下。
1.有一个强大的n维数组对象ndarray。
2.广播功能函数。
3.线性代数、傅立叶变换、随机数生成、图形操作等功能。
4.整合C/C++/Fortran代码的工具。
二、创建数组
学习Numpy前,我们先了解一下数组的相关概念。数组可分为一维数组、二维数组、三维数组,其中三维数组是常见的多维数组。
1.数组的相关概念
1.一维数组
一维数组很简单,基本和Python列表一样,区别于数组切片针对的是原始数组(这意味着,如果对数组进行修改,原始数组也会跟着更改)。
2.二维数组
二维数组本质是以数组作为数组元素的数组。二位数组包括行和列,类似于表格形式,又称为矩阵。
3.三维数组
三维数组是指维数为3的数的结构,也称矩阵列表。三维数组是最常见的多维数组,由于可以用来描述三维空间中的位置或状态而被广泛使用。
2.创建简单的数组
Numpy创建简单的数组主要使用array()函数,语法如下:
numpy.arry(object,dtype=None,copy=True,order='K',subok=Flase,ndmin=0)
参数说明:
object:任何具有数组接口方法的对象。
dtype:数据类型。
copy:布尔型,可选参数,默认值为True,则object 对象被复制:否则,只有当_amray_返回副本,object 参数为嵌套序列,或者需要副本满足数据类型和顺序要求时,才会生成副本。order:元素在内存中的出现顺序,值为K、A、C、F。如果object 参数不是数组,则新创建的数组将按行排列(C),如果值为F,则按列排列;如果object 参数是一个数组,则C(按行)、F(按列)、A(原顺序)、K(元素在内存中的出现顺序)成立。
subok:布尔型。如果值为True,则将传递子类;否则返回的数组将强制为基类数组(默认值)。
ndmin:指定生成数组的最小维数。
演示如何创建数组
创建几个简单的数组,效果如图
程序代码如下:
import numpy as np #导入Numpy模块
n1=np.array([1,2,3]) #创建一个简单的数组
n2=np.array([0.1,0.2,0.3]) #创建一个包含小数的一维数组
n3=np.array([1,2],[3,4]) #创建一个简单的二维数组
(2.1)为数组指定数据类型
Numpy支持比Python更多种类的数据类型,通过dtype参数可以指定数组的数据类型,程序代码:
import numpy as np
list=[1,2,3]
#创建浮点型数组
n1=np.array(list,dtype=np.float_)
运行程序,输出结果如下:
[1,2,3]
float64
<class'numpy.float64'>
(2.2)数组的复制
当运算和处理数组时,为了不影响到原数组,就需要对原数组进行复制,而对复制后的数组进行修改删除等操作都不会影响到原数组。数组的复制可以通过copy参数实现,程序代码如下:
import numpy as np
n1=np.array([1,2,3])
n2=np.array(n1,copy=True)
n2[0]=3
n2[2]=1
print(n1)
print(n2)
运行程序,输出结果如下:
[1,2,3]
[3,2,1]
(2.3)通过ndmin参数控制最小维数
无论给出的数组的维数是多少,ndmin参数都会根据最小维数创建指定维数的数组。
ndmin=3,虽然给出的数组是一维数组,但是同样会创建一个三维数组,程序代码如下:
import numpy as np
nd1=[1,2,3]
nd2=np.array(nd1,ndmin=3)
print(nd2)
运行程序,输出结果如下:
[[[1 2 3]]]
(2.4)生成随机数组
(2.4.1)rand()函数
rand()函数用于生成(0,1)之间的随机数组,传入一个值随机生成一维数组,传入一对值则随机生成二维数组,语法如下:
numpy.random.rand(d0,d1,d2,d3,...,dn)
参数d0,d1,...,dn为整数,可以为空。
【示例】随机生成0~1的数组。
随机生成一维数组和二维数组,代码如下:
import numpy as np
n=np.random.rand(5)
print('随机生成0~1的一维数组: ')
print(n)
n1=np.random.rand(2,5)
print('随机生成0~1的二维数组: ')
print(n1)
运行程序,输出结果如下:
(2.4.2)randn()函数
)randn()函数用于从正态分布中返回随机生成的数组,语法如下:
numpy.random.randn(d0,d1,d2,d3,...,dn)
【示例】随机生成满足正态分布的数组,程序代码如下:
import numpy as np
n1=np.random.randn(5)
print('随机生成满足正态的一维数组: ')
print(n1)
n2=np.random.randn(2,5)
print('随机生成满足正态分布二维数组: ')
print(n2)
运行程序,输出结果如下:
(2.4.3)randint()函数
randint()函数于Numpy的arange函数类似。randint()函数用于生成一定范围内的随机数组,左闭右开区间,语法如下:
numpy.random.randint(low,high=None,size=None)
【示例】生成一定范围内的随机函数,程序代码如下:
import numpy as np
n1=np.random.randint(1,3,10)
print('随机生成10个1~3且不包括3的整数: ')
print(n1)
n2=np.random.randint(5,10)
print(n2)
n3=np.random.randint(5,size=(2,5))
print('随机生成5以内二维数组')
print(n3)
运行程序,输出结果如下:
(2.4.4)normal()函数
normal用于生成正态分布的随机数,语法如下:
numpy.random.normal(loc,scale,size)
【示例】生成正态分布的随机函数
import numpy as np
n=np.random.normal(0,0.1,10)
print(n)
运行程序,输出结果如下:
以上总结,我们可以认识到numpy数组,有一维数组,二维数组,三维数组,还有能够掌握的一些常用操作,可以为数组指定数据类型,还有数组的复制,通过ndmin参数控制最小维数,还有学习到生成随机数组,有rand()函数,randn()函数,randint()函数,normal()函数。另外,当数据量非常大时,numpy可以带来百倍以上的提升。
本文文章链接:如何创建数组Numpy-CSDN博客