苏州制作公司网站的,网站要咋做,上海十大展厅设计公司,电商网站用什么做的一、创建ndarray
*ndarray是NumPy中表示数组的重要类型
1、使用np.array()创建
*参数列表#xff1a;[1,2,3,4]
注#xff1a;(1)、numpy默认ndarray的所有元素的类型是相同的
(2)、如果传入的数据类型不同#xff0c;会被按照优先级强制转换为同一类型#xff0c;其…一、创建ndarray
*ndarray是NumPy中表示数组的重要类型
1、使用np.array()创建
*参数列表[1,2,3,4]
注(1)、numpy默认ndarray的所有元素的类型是相同的
(2)、如果传入的数据类型不同会被按照优先级强制转换为同一类型其中优先级为 str float int
(3)、ndarray常见的数据类型int: int8、uint8、int16、int32、int64float:float16、float32、float64str:字符串
a [1,2,3,4,5]
n np.array(a)
print(n)
#显示类型
print(type(n))
#显示形状
print(n.shape)
2、使用np的routines函数创建
(1)、np.ones(shape,dtype None,order C)
*创建一个所有元素都为1的多维数组
参数说明 shape形状 dtypeNone元素类型
order{‘C’‘F’}可选默认值C是否在内存中以行主或列主顺序存储多维数据一般默认
n np.ones(shape(3,),dtype np.int8)
(2)、np.zeros(shape,dtype float,order C)
*创建一个所有元素都为0的多维数组
参数说明 *shape形状 *dtype None:元素类型
n np.zeros(shape (5,5),dtype np.int16)
(3)、np.full(shape,fill_value,dtype None,order C)
*创建一个所有元素都为指定元素的多维数组
参数说明 *shape形状 *fill_value:填充值 *dtype None:元素类型
n np.full(shape (3,4),fill_value 8)
(4)、np.eye(N,MNone,k0,dtypefloat)
*对角线为1其他位置为0的二维数组
参数说明 *N行数 *M列数默认为None,表示和行数一样 *k :主对角线向右偏移的位置 *dtype None元素类型
n np.eye(9,9,k3)
(5)、np.linspace(start,stop,num 50,endpoint True,restep False,dtype None)
*创建一个等差数列
参数说明 start开始值 stop结束值 num 50等差数列中默认有50个数 endpoint True:是否包含结束值 restep False:是否返回等差值(步长) dtype None元素类型
n np.linspace(1,9,5)
print(n)
(6)、np.arange(start,stop,step,dtype None)
*创建一个数值范围的数组
*和Python中range功能类似
参数说明
start开始值
stop结束值不包含
step步长
dtype None元素类型
n np.arange(2,10,2)
print(n)
(7)、np.random.randint(low,high None,size None,dtype None)
*创建一个随机整数的多维数组
参数说明 low最小值 highNone最大值 注highNone时生成的数值在0low之间 如果使用high这个值则生成的数值在lowhigh之间 size None数组形状默认只输出一个随机值 dtype None元素类型
#随机整数单个数
n np.random.randint(3,10)
print(n)
#随机整数一维数组
n np.random.randint(3,10,size6)
print(n)
#随机整数二维数组
n np.random.randint(3,10,size(3,4))
print(n)
#随机整数三维数组
n np.random.randint(0,256,size(20,40,3))
print(n)
(8)、np.random.randn(d0,d1,......,dn)
*创建一个服从标准正态分布的多维数组
*创建一个所有元素都为1的多维数组
参数说明 dn:第n个维度的值 n np.random.randn(1,2,3)
print(n)
(9)、np.random.normal(loc 0.0,scale 1.0,size None)
*创建一个服从正态分布的多维数组
参数说明 loc:均值 scale标准差对应分布的宽度scale越大正态分布的曲线越矮胖scale越小曲线越高瘦 size None数组形状
n np.random.normal(10,0.5,size(3,4))
print(n)
(10)、np.random.random(size None)
*创建一个元素为0~1左闭右开的随机数的多维数组
参数说明 size None数组形状
n np.random.random(size(3,4))
print(n)
(11)、np.random.rand(d0,d1,......,dn)
*同np.random.random(size None)
*创建一个元素为0~1左闭右开的随机数的多维数组
参数说明 dn:第n个维度的数值
n np.random.rand(3,4)
print(n) 二、ndarray的属性
1、ndim(维度)
n np.random.rand(3,4)
print(n)
w n.ndim
print(w)
2、shape(形状)
*三个数字分别表示各个维度的长度
n np.random.rand(3,4)
print(n)
w n.ndim
print(w)
x n.shape
print(x)
3、size(总长度)
*即行和乘列和
n np.random.rand(3,4)
print(n)
w n.ndim
print(w)
x n.shape
print(x)
c n.size
print(c)
4、dtype(元素类型)
n np.random.rand(3,4)
print(n)
w n.ndim
print(w)
x n.shape
print(x)
c n.size
print(c)
l n.dtype
print(l)
三、ndarray的基本操作
1、索引
一维和列表索引的操作一致。
2、 根据索引修改数据
(1)、将第二行全部数字改为0.88
n np.random.rand(3,4)
print(n)
#将第二行全部数字改为0.88
n[1]0.88
print(n)
(2)、将第二行最后一个数改为0.88
a np.random.rand(3,4)
print(a)
#将第二行最后一个数改为0.88
a[1][3]0.88
print(a)
3、切片
import numpy as np
#列表有逗号间隔
# I [1,2,3,4,5,6,7,8]
# a I[2:6]
# b I[::-1] #翻转
# print(a)
# print(b)
# #数组没有逗号间隔
# n np.array(I)
# a n[2:6]
# print(n)
# print(a)#对于二维数组的行切片
n np.random.randint(0,10,size(6,8))
# #取一行
# print(n[0])
# #连续取多行
# print(n[1:4])
# #取不连续多行
# print(n[[1,2,4]])#对于二维数组的列切片
n np.random.randint(0,10,size(6,8))
print(n)
#取一列
print(n[:,0]) #取第一列
print(n[1:4,0]) # 取第二到第四行的第一列
#取连续的多列切片
print(n[:,2:5]) #取第三到第五列的所有行
#取不连续的多列中括号
print(n[:,[1,3,4]]) #取第二列和第四列和第五列的所有行
4、翻转
1、行翻转
n[::-1]
(2)、列翻转
n[:,::-1]
5、变形
使用reshape函数
import numpy as npn np.arange(1,21)
print(n)#reshape:将数组改变形状 变成二维
a np.reshape(n,newshape(4,5))
print(a)#使用-1表示任意剩余维度长度
e n.reshape(4,-1)
print(e)
r n.reshape(-1,2)
print(r)
6、级联合并)
#级联合并
a np.concatenate((n1,n2)) #上下合并
print(a)l np.concatenate((n1,n2),axis0) #上下合并
print(l)p np.concatenate((n1,n2),axis1) #左右合并
print(p)#左右合并
i np.hstack((n1,n2))
print(i)#上下合并
u np.vstack((n1,n2))
print(u)
7、拆分
1、np.split()
2、np.hsplit()
3、np.vsplit()
import numpy as npn np.random.randint(0,100,size(4,4))
print(n)
a np.split(n,4)
print(a)
b np.hsplit(n,4)
print(b)
#垂直拆分平均拆成3份
c np.vsplit(n,4)
print(c)
#按照指定位置拆分
d np.vsplit(n,(1,2,4))
print(d)
#水平拆分
e np.hsplit(n,4)
print(e)
print()
#split:做水平和垂直拆分
#axis 0行
#axis 1列
a np.split(n,4)
a np.split(n,4,axis0)
print(a)
print()
m np.split(n,4)
m np.split(n,4,axis1)
print(m)
8、拷贝
import numpy as np#n2不会随着n的变化而变化
n np.random.randint(0,10,size(2,3))
n2 n.copy()
n[0][0] 0
print(n2)
print(n)#注如果用n3 n则n2会随着n的变化而变化
n3 n
print(n3)
四、numpy的聚合操作
1、求和np.sum()
import numpy as npn np.arange(10)
print(n)s np.sum(n)
print(s)n np.random.randint(0,10,size(3,5))
print(n)
s1 np.sum(n)
print(s1) #全部数加起来
s2 np.sum(n,axis0)
print(s2) #表示每一列的多行求和
s3 np.sum(n,axis1)
print(s3) #表示每一行的多列求和
2、最小值np.min
3、最大值np.max
4、平均值np.mean
5、平均值np.average
6、中位数np.median
7、百分位数np.percentile
8、最小值对应的下标np.argmin
9、最大值对应的下标np.argmax
10、标准差np.std
11、方差np.var
12、次方求幂np.power
13、按条件查找np.argwhere
14、np.nansum *nan:数值类型not a number:不是一个正常的数值表示空 *np.nan:float类型
#对于含有空的数组要用np.nansum进行求和
n np.array([1,2,3,np.nan])
print(n)
#实质是去掉空值后的数组进行求和
s4 np.nansum(n)
print(s4)
五、矩阵操作
1、基本的矩阵操作
算术运算符加减乘除
矩阵和矩阵之间运算
数与矩阵运算
2、矩阵乘积
np.dot(第一个矩阵的列数等于第二个矩阵的行数)
import numpy as npn1 np.random.randint(0,10,size(4,4))
n2 np.random.randint(0,10,size(4,5))
print(n1,n2)
print()
n3 np.dot(n1,n2)
print(n3)
3、矩阵的逆
n4 np.linalg.inv(n2)
print(n4)
4、行列式的计算
n5 np.round(np.linalg.det(n1))
print(n5)
5、矩阵的秩
n6 np.linalg.matrix_rank(n1)
print(n6) 六、ndarray的广播机制
(1)、为缺失的维度补维度
(2)、缺失元素用已有的数组填充
import numpy as npx np.full(shape(3,3),fill_value2)
print(x)
y np.arange(3)
print(y)
z xy
print(z)
#注第二个数组会自动补上两行[0 1 2],然后在进行相加
七、数学操作
import numpy as npn np.array([1,2,3,5,5,44,55,66])#绝对值
print(np.abs(n))
#平方根
print(np.sqrt(n))
#平方
print(np.square(n))
#指数
print(np.exp(n))
#自然对数
print(np.log(n))
#以2为底的对数
print(np.log2(n))
#以10为底的对数
print(np.log10(n))
#正弦函数
print(np.sin(n))
#余弦函数
print(np.cos(n))
#正切函数
print(np.tan(n))
#向上取整
print(np.ceil(n))
#四舍五入
print(np.round(n,2))
#向下取整
print(np.floor(n))
#累加
print(np.cumsum(n))
八、ndarray的排序
1、np.sort()
不改变输入
import numpy as npn np.array([55,44,8,2,9,7,3,6])
print(np.sort(n))
print()
2、ndarray.sort()
本地处理不占用空间但不改变输入
import numpy as npn1 np.random.randint(0,10,size8)
print(n1)
n1.sort()
print(n1)
九、文件操作
1、保存数组到npy或npz文件
save保存ndarray到一个npy文件。
savez将多个array保存到一个npz文件中。
import numpy as npx np.arange(5)
y np.arange(10,20)np.save(x,x)
np.savez(arr.npz,xarr x,yarr y)
a np.load(x.npy)
b np.load(arr.npz)[yarr]print(a)
print(b)
2、保存数组到csv或txt文件
n np.random.randint(0,10,size(3,4))
#存储到csv或txt
#delimiter ,:分隔符
np.savetxt(arr.csv,n,delimiter,)
#读取csv或txt
#注最新版numpy不能用dtype要用astype
c np.loadtxt(arr.csv,delimiter,).astype(np.int8)
print(c)