Python Numpy基础学习

numpy中的数组操作

import numpy as np
##创建一个n维数组
a=np.array([1,2,3])#一维
b=np.array([[1,2],[3,4]])#二维
c=np.array([1,2,3,4,5,6],ndmin=2)#设置最小维度
d=np.array([1,2,3,4],dtype=complex)#设置数组元素类型
#print(f'{a}\n{b}\n{c}\n{d}')

##创建结构体类型数组
type=np.dtype([('name','S20'),('age','i1')])
e=np.array([('tom',12),('Jerry',13)],dtype=type)
#print(e)

##调整数组的维数
f=np.array([1,2,3,4,5,6])
g=f.reshape(1,2,3);#调整维数
#print(np.ndim(g))#输出g的维数
#print(g.shape)
#ps:reshape返回的是非拷贝副本,修改f,g也会随之变化


##创建数组
#创建未初始化的空数组
#i=np.empty(shape=[3,2],dtype='S10',order='C')
#shape:数组形状  dtype:元素类型
# order:内存存储元素顺序,‘C’行优先 ‘F’列优先
# np.zeros()#创建数组如上,初始化元素为0
# np.ones()#创建数组如上,初始化元素为1


#从已有对象a创建数组
#np.asarray(a,dtype,order)
#从迭代器对象创建数组
#numpy.fromiter(iterable, dtype, count=-1)#count为读取的数据量,-1默认所有


##从数值范围创建数组
#np.arange(start,stop,step,dtype);
#创建一个等差数列的一维数组
#np.linspace(start,stop,num,endpoint,retstep,dtype)
#endpoint:是否包含结束点,默认为True,retstep:是否显示间距

#创建一个等比数列的一位数组
#np.logspace(start,stop,num,endpoint,base,dtype)
#base:对数log的底数

#切片
# k = np.array([[1,2,3],[3,4,5],[4,5,6]])
# print (k[...,1])   # 第2列元素
# print (k[1,...])   # 第2行元素
# print (k[...,1:])  # 第2列及剩下的所有元素

#布尔索引
# l=np.array([1,2,3,4,5,6])
# print(l[l>2])

#过滤非负数
# a = np.array([1,  2+6j,  5,  3.5+5j])
# print (a[np.iscomplex(a)])


##迭代数组
#使用np.nditer灵活访问多维数组的元素
# m=np.arange(6).reshape(2,3)
# print()
#方法一:
# for i in np.nditer(m,order='F'):#F列序优先,C行序优先
#     print(i,end=' ')
#方法二:
# for i in m.flat:
#     print(i)


##复制拷贝数组,修改新数组,原数组不受影响
# n=np.arange(6).reshape(2,3)
# o=n.flatten()
# o[0]=1
# print(o)
# print(n)


##展平多维数组的元素(通常按行展开)
# p=np.arange(6).reshape(2,3)
# print(np.ravel(p, order='C'))


##对换数组的维度(转置,行列互换)
# q=np.arange(6).reshape(2,3)
# print(q)
# print(np.transpose(q))


##插入新轴扩展数组形状
# r=np.arange(6).reshape(2,3)
# s=np.expand_dims(r,axis=0)
# print(s)


##沿指定轴连接相同形状的两个或多个数组
# t=np.arange(6).reshape(2,3)
# u=np.array([[1,2,3],[4,5,6]])
# print(f'{t}\n{u}')
# print()
# print(np.concatenate((t,u)))
#功能相同;numpy.stack用于连接数组序列
            # numpy.hstack:用于水平堆叠
            #numpy.vstack:用于垂直堆叠


#将一位数组分割为多个子数组
# v=np.arange(9)
# #w=np.split(v,4)#平均分为4份,除不开会报错
# w=np.split(v,[2,5,7])#指定每一份的开始位置
# print(w)
#ps: np.hsplit:用于水平分割数组
     #np.vsplit:用于垂直分割数组


##函数返回指定大小的新数组
# a=np.arange(6).reshape(2,3)
# print(a)
# b=np.resize(a,[3,2])
# print(b)
# c=np.resize(b,[4,3])
# print(c)#尺寸变了后,用前面的补齐


##往数组末尾添加值,若不指定轴则总是返回一维数组。
# a=np.arange(6).reshape(2,3)
# print(a)
# print(np.append(a,[3,6,9]))
# print(np.append(a,[[9,6,3]],axis=0))
# print(np.append(a,[[1],[2]],axis=1))


##在给定索引之前插入 规则跟以上差不多,未提供轴参数,数组会展开
# a=np.arange(6).reshape(2,3)
# print(a)
# print(np.insert(a,3,[111,222]))
# print(np.insert(a,1,[6,7],axis=1))


#删除指定元素或子数组,规则跟以上差不多,未提供轴参数,数组会展开
# a=np.arange(6).reshape(2,3)
# print(a)
# print(np.delete(a,2))
# print(np.delete(a,1,axis=0))#删除第二行


#元素去重
#numpy.unique(arr, return_index, return_inverse, return_counts)
# arr:输入数组,如果不是一维数组则会展开
# return_index:如果为true,返回新列表元素在旧列表中的位置(下标),并以列表形式储
# return_inverse:如果为true,返回旧列表元素在新列表中的位置(下标),并以列表形式储
# return_counts:如果为true,返回去重数组中的元素在原数组中的出现次数
# a=np.arange(6).reshape(2,3)
# b=np.arange(1,7).reshape(2,3)
# c=np.concatenate((a,b))
# print(c)
# print()
# print(np.unique(c,return_counts=True))#各个元素出现的次数

##类型修改
#ndarry.astype(np.int32)


###Numpy字符串函数
# numpy.char.add()
# numpy.char.multiply()
# numpy.char.center()
# numpy.char.capitalize()
# numpy.char.title()
# numpy.char.lower()
# numpy.char.upper()
# numpy.char.split()
# numpy.char.splitlines()
# print(np.char.strip('  yes   '))
# numpy.char.join()
# numpy.char.replace()
# numpy.char.encode()
# numpy.char.decode()

#返回倒数
# print(np.reciprocal(0.33))


#指定轴元素的最大最小值
# np.amin(a,axis)
# np.amax(a,axis)

#返回最大最小元素的差(不指定轴时,默认为全部元素)
# np.ptp();

#若第二个参数是50就相当于求平均值。(不指定轴时,默认为全部元素)
# print(np.percentile([[1,2,3],[4,5,6],[7,8,9]],50,axis=1))


#中位数(不指定轴时,默认为全部元素)
# print(np.median([1,2,3]))

#算术平均值(不指定轴时,默认为全部元素)
# print(np.mean([1,2,3,4,5]))

#加权平均值,每个数乘以权重的和 再除以总权重
# print(np.average([1,2,3,4],weights=[4,3,2,1],returned=True))

#标准差:数组中每个元素与数组平均值的差的平方相加,再除以数组元素个数的开方
# np.std()
# #方差数组中每个元素与数组平均值的差的平方相加
# np.var()

##创建视图 试图修改不会影响原数组
# a=np.arange(6).reshape(3,2)
# b=a.view()
# b.shape=2,3


import numpy.matlib
# print (np.matlib.empty((2,2)))
# print (np.matlib.zeros((2,2)))
# print(np.matlib.ones((2,2)))
# #numpy.matlib.eye() 函数返回一个矩阵,对角线元素为 1,其他位置为零。
# print(np.matlib.eye(2,2,0))


#创建给定大小的单位矩阵
# a=np.matlib.identity(5)
# print(a)

#创建一个矩阵,数据是随机的
# a=np.matlib.rand(3,3)
# print(a)


#一维数组的内积,二维数组矩阵相乘
# a=np.arange(6).reshape(2,3)
# b=np.arange(1,7).reshape(3,2)
# print(np.dot(a,b))
# #两个向量的内积:展开后对应位置相乘的和
# print(np.vdot(a,b))

#返回一位数组向量内积。对于更高维度。返回最后一个轴上乘积的和
# a=np.arange(4).reshape(2,2)
# b=np.arange(1,5).reshape(2,2)
# print(a)
# print(b)
# print()
# print(np.inner(a,b))
# #print(np.inner(a,b))


# #矩阵相乘
# a = [[1,0],[0,1]]
# b = [1,2]
# print(numpy.matmul(a,b))



#计算行列式
# print(np.linalg.det([[1,2,3],[2,4,6],[7,8,9]]))


#求解线性方程组
# np.linalg.solve(a,b)



#求一个矩阵的逆矩阵
# x=np.array([[1,0],[0,1]])
# y=np.linalg.inv(x)
# print(y)
# print()
# print(np.matmul(x,y))
# print(np.dot(x,y))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值