文章目录

  • 1.导入numpy库
  • 2.ndarray数组的常用属性
  • 3.ndarray数组的创建
  • 4.ndarray数组的形状变换
  • 5.改变ndarray数组元素的类型
  • 6.将ndarray数组转换为列表
  • 7.ndarray数组的索引和切片
  • 8.ndarray的标量运算函数
  • 9.数据文件的读取与输出
  • 10.Numpy中的随机数函数
  • 11.Numpy中的统计函数
  • 12.Numpy的梯度函数
  • 13.多维数组的平铺
  • 14.获取排序结果的下标数组


1.导入numpy库

import numpy as np

2.ndarray数组的常用属性

# 1.数组的维度属性:ndim
# 2.数组的形状属性:shape
# 3.数组的元素个数属性:size
# 4.数组的元素类型属性:dtype
# 5.数组中每个元素的字节数属性:itemsize

3.ndarray数组的创建

# 1.使用np.array函数将列表或元组转化为数组
# 语法:array(列表名/元组名,元素类型),其中元素类型参数可以省略
a1=np.array([1,2,3,4],dtype=np.int32)
a2=np.array((1,2,3,4),dtype=np.float32)

# 2.使用arange函数创建从0开始的数组
# 语法:np.arange(元素个数)
b=np.arange(10)

# 3.使用ones或zeros函数创建一个指定形状的全零或全一数组
# 语法:np.ones/zeros(数组形状),其中数组形状用一个元组表示
c1=np.ones((5,5))
c2=np.zeros((3,2))

# 4.使用full函数创建一个指定形状和填充值的数组
# 语法:np.full(数组形状,填充值),数组形状用一个元组表示
d=np.full((2,2),10)

# 5.使用eye函数创建一个指定阶数的单位矩阵
# 语法:np.eye(矩阵阶数)
e=np.eye(4)

# 6.使用ones_like或zeros_like函数生成与另一个数组形状相同的全零或全一数组
# 语法:np.ones_like/zeros_like(另一个数组)
f0=np.array([1,2,3,4])
f1=np.ones_like(f0)
f2=np.zeros_like(f0)

# 7.使用full_like函数生成一个与另一个数组形状相同的指定填充值的数组
# 语法:np.full_like(另一个数组,填充值)
g0=np.array([1,2,3,4,5])
g1=np.full_like(g0,1)

# 8.使用linspace函数生成指定两端点和公差等差数组
# 语法:np.linspace(起始值,终止值,数字个数)
h=np.linspace(1,100,5)

# 9.使用contatenate函数合并多个数组
# 语法:np.contatenate(多个数组构成的元组)
i1=np.array([1,2,3,4])
i2=np.array([5,6,7,8])
i3=np.contatenate(i1,i2)

4.ndarray数组的形状变换

# 1.使用reshape函数获取一个转变了形状的新数组(要保证数组的元素个数不发生变化)
# 语法:对象名.reshape(新数组形状),其中新数组形状用元组表示
a1=np.array([1,2,3,4])
a2=a1.reshape((2,2))
# 另外,reshape函数还有一些常见用法:
# (1)reshape(1,-1)表示将数组转换为一行
# (2)reshape(-1,1)表示将数组转换为一列

# 2.使用resize函数修改数组的形状(要保证数组的元素个数不发生变化)
# 语法:对象名.resize(新形状),其中新形状用元组表示
b=np.array([1,2,3,4])
b.resize((2,2))

# 3.使用swapaxes函数交换数组中的两个维度
# 语法:对象名.swapaxes(第一个维度,第二个维度),维度从0开始表示
c=np.array([[1],[2],[3],[4]])
c.swapaxes(0,1)

# 4.使用flatten函数获取一个数组降维到一维的结果
# 语法:对象名.flatten()
d1=np.array([[1],[2],[3],[4]])
d2=d1.flatten()

5.改变ndarray数组元素的类型

# 使用astype函数获取某数组的元素类型转换后的数组
# 语法:对象名.astype(新类型名)
a=np.array([1,2,3],dtype=np.int)
b=a.astype(np.float)

6.将ndarray数组转换为列表

# 使用tolist函数将数组转化为列表
# 语法:对象名.tolist()
a=array([1,2,3,4])
b=a.tolist()

7.ndarray数组的索引和切片

ndarray数组的索引和切片方式与Python中列表的索引和切片操作相同。

8.ndarray的标量运算函数

# 1.使用abs函数和fabs函数求数组元素绝对值
a1=np.array([-1,-2,-3,-4])
a2=np.fabs(a)

# 2.使用sqrt函数求元素的平方根
b1=np.array([1,2,3,4])
b2=np.sqrt(b1)

# 3.使用square函数求元素的平方
c1=np.array([1,2,3,4])
c2=np.square(c1)

# 4.使用log log2和log10函数求元素的对数
d1=np.array([1,2,3,4])
d2=np.log(d1)
d3=np.log(d2)
d4=np.log(d3)

# 5.使用ceil和floor对元素取上下整数
e1=np.array([1.1,2.2,3.3,4.4])
e2=np.ceil(e1)
e3=np.floor(e2)

# 6.使用rint函数求元素的四舍五入值
f1=np.array([1.1,2.2,3.3,4.4])
f2=np.rint(f1)

# 7.使用sin cos和tan函数求解三角函数值
g0=np.array([1,2,3,4])
g1=np.sin(g0)
g2=np.cos(g0)
g3=np.tan(g0)

# 8.使用exp函数求解数组元素的指数值
h1=np.array([1,2,3,4])
h2=np.exp(3)

9.数据文件的读取与输出

# 1.使用savetxt函数来向文件中保存数据
# 语法:np.savetxt(文件,数组,fmt=格式,delimiter=分隔符)
# 文件表示文件名,数组表示需要进行保存的ndarray数组,fmt表示字符串的格式,delimiter是两个相邻数据之间的分隔符
a=np.array([1,2,3,4])
np.savetxt("NewText1.dat",a,fmt='%.2f',delimiter=",")

# 2.使用loadtxt函数来读取文件中的数据
# 语法:np.loadtxt(文件名,dtype=元素类型,delimiter=分隔符)
np.loadtxt("NewText1.dat",dtype=np.float,delimiter=",")

# 3.使用tofile函数向文件中保存数据,如果不指定生成的格式是字符串,则生成二进制文件
# 语法:对象名.tofile(文件名,sep=分隔符,format=格式)
b=np.array([1,2,3,4])
b.tofile("NewText2.dat",sep=",",format="%d")

# 4.使用fromfile函数读取tofile函数生成的文件
# 语法:np.fromfile(文件名,dtype=数据类型,count=读取元素个数,sep=分隔符)
# 后面三个参数可省略。count默认为-1,表示读取所有数据
# 注意:使用该方法读取文件需要事先知道数组的元素类型和数组形状
c=np.fromfile("NewText2.dat",dtype=np.float,count=-1,sep=",")

# 5.使用save函数和load函数实现便捷文件存取
# 语法:np.save(文件名,数组)  np.load(文件名)
# save函数生成的文件以.npy为扩展名,只有通过load方式进行读取
d1=np.array([1,2,3,4])
np.save("NewText3",d)
d2=np.load("NewText3")

10.Numpy中的随机数函数

# 1.使用rand函数生成0-1之间均匀分布的指定形状的随机数组
# 语法:np.random.rand(第一维长度,第二维长度...第n维长度)
a=np.random.rand(3,3)

# 2.使用randn函数生成服从标准正态分布的指定形状的随机数组
# 语法:np.random.randn(第一维长度,第二维长度...第n维长度)
b=np.random.randn(3,3)

# 3.使用randint函数生成取值在指定范围内的指定形状的整数数组
# 语法:np.random.randint(最小值,最大值,数组形状)
c=np.random.randint(1,100,(2,3))

# 4.使用seed函数指定随机数种子
# 语法:np.random.seed(随机数种子)
np.random.seed(10)

# 5.使用shuffle函数打乱数组元素的顺序(按照第一个维度打乱)
# 语法:np.random.shuffle(数组)
d=np.array([[1],[2],[3],[4]])
np.random.shuffle(d)

# 6.使用permutation函数生成一个新的打乱后的数组
# 语法:np.random.permutation(数组)
e1=np.array([[1],[2],[3],[4]])
e2=np.random.permutation(e1)

# 7.使用choice函数在一维数组中抽取元素形成一个指定形状的新数组
# 语法:np.random.choice(数组,形状,replace=是否可重用,p=概率向量)
# replace表示是否可以重用元素,默认为False;
# p表示一个表示概率的向量,元素相加为1且不能有负数
f1=np.array([1,2,3,4,5,6])
f2=np.random.choice(f1,(2,3),replace=False)

# 8.使用uniform函数生成在指定区间内均匀分布的指定形状的随机数组
# 语法:np.random.uniform(最小值,最大值,形状)
g=np.random.uniform(1,10,(2,3))

# 9.使用normal函数生成指定均值和标准差的服从正态分布的随机数组
# 语法:np.random.normal(均值,标准差,形状)
h=np.random.normal(10,3,(3,3))

# 10.使用possion函数生成服从泊松分布的指定随机事件发生率的随机数组
# 语法:np.random.possion(随机事件发生率,形状)
i=np.random.possion(0.5,(2,2))

11.Numpy中的统计函数

# 1.使用sum函数对数组元素进行求和
# 语法:np.sum(数组,axis=求和的维度),其中axis参数可以省略
a=np.array([[1,2,3],[4,5,6]])
b=np.sum(a,axis=1)

# 2.使用mean函数对数组元素求期望
# 语法:np.mean(数组,axis=求期望的维度),其中axis参数可以省略
a=np.array([[1,2,3],[4,5,6]])
b=np.mean(a,axis=1)

# 3.使用average函数求数组元素的加权平均值
# 语法:np.average(数组,axis=求加权平均值的维度,weights=权重列表)
weights=[0.4,0.4,0.2]
a=np.array([1,2,3],[4,5,6])
b=np.average(a,axis=1,weights)

# 4.使用std函数求数组元素的标准差
# 语法:np.std(数组,axis=求标准差的维度)
a=np.array([[1,2,3,4,5],[6,7,8,9,10]])
b=np.std(a,axis=1)

# 5.使用var函数求数组元素的方差
# 语法:np.var(数组,axis=求方差的维度)
a=np.array([[1,2,3],[4,5,6]])
b=np.var(a,axis=1)

# 6.使用min/max函数求解数组的最值
# 语法:np.min/max(数组)
a=np.array([1,2,3,4,5,6])
b=np.min(a)
c=np.max(a)

# 7.使用argmin/argmax函数求解数组经过一维化后的最值下标
# 语法:np.argmin/argmax(数组)
a=np.array([3,4,7,2,1])
b=np.argmin(a)
c=np.argmax(a)

# 8.使用median函数求数组的中位数
# 语法:np.median(数组)
a=np.array([1,2,3,4,5])
b=np.median(a)

12.Numpy的梯度函数

# 使用gradient函数计算数组每个维度的梯度值
# 语法:np.gradient(数组)
a=np.array([[1,2,3],[4,5,6]])
b=np.gradient(a)

13.多维数组的平铺

# 使用tile函数进行数组的平铺
# 功能介绍:相当于Matlab中的repeat函数。相当于把整个数组当成一个元素,构造出一个新的指定行列数的填充值都是当前数组的矩阵。
# 使用语法:tile(多维数组,(行数,列数))
from numpy import *
a=array([[1,2][3,4]])
b=tile(a,(2,2))

14.获取排序结果的下标数组

# 使用argsort方法获取下标递增排序数组
# 功能介绍:获取对数组元素按照从小到大进行排序后其下标的排列顺序(不改变数组本身元素的排序)
# 使用语法:下表排序结果=数组名.argsort()
from numpy import *
a=array([5,4,3,2,1])
b=a.argsort()