python学习
学习Python基础语法:https://www.runoob.com/python/python-tutorial.html #生活技巧# #工作学习技巧# #编程学习资源#
numpy中的数组类型为ndarry
创建
# -*- coding: utf-8 -*- import numpy as np#用列表或元组创建 a = np.array([[1,2,3],[4,5,6]]) b = np.array([1,2],dtype=complex)#类似内置函数range c = np.arange(24).reshape(2,3,4)#等差,等比数组 d = np.linspace(0,1,10,endpoint=False) print np.logspace(0,4,3,base=2)#创建特殊数组 print np.zeros((2,3)) print np.zeros_like(a) print np.ones((2,3),dtype=np.int16) #全1 print np.empty((2,3)) print np.eye(3) #单位阵#从字符串,函数,文件等创建 s ='abcdef' print np.fromstring(s,dtype=np.int8) print np.fromfunction(lambda i,j:(i+1)*(j+1), (9,9)) #fromfile从二进制文件中创建,tofile写入文件#从文件创建 np.savetxt('123.txt',a) #存为文本 e = np.loadtxt('123.txt')#文件操作还有savez,save,load np.save('c.npy', c) #存为二进制,后缀不可变 c = np.load('c.npy') print cnp.savez('c.npz', c,d) #存储多个数组 d = np.load('c.npz') print d['arr_0'], d['arr_1']c.tofile('c.bin') c = np.fromfile('c.bin',dtype=np.int32) #读出来是一维的 print c#创建随机数组 print np.random.random((2,3))#结构体数组 persontype = np.dtype({'names':['name','age','weight'], 'formats':['S30','i','f']}, align=True) f = np.array([('zhang',32,75.5), ('wang',24,65.2)], dtype=persontype) print f print f['name'] print f[0]['age']
属性
# -*- coding: utf-8 -*- import numpy as npa = np.array([[1,2,3],[4,5,6]])print a.ndim #维数 print a.shape #(3,2) 每个维数的长度 print a.size #元素个数 print a.dtype #float64,元素类型.所有类型可通过set(np.typeDict.values())查看 print a.itemsize #每个元素的字节数 print a.data #缓冲区地址
使用
# -*- coding: utf-8 -*- import numpy as npa = np.array([[1,2,3],[4,5,6]])print a[1][2] index = (1,2) print a[index] print a[0:2,1] print a[:,[0,2]] #取第0和2列 print a[1] print a[...,1]for row in a:print row for element in a.flat:print elementb = a>4 a[b] = 0 print a
操作
# -*- coding: utf-8 -*- import numpy as npa = np.array([[1,2,3],[4,5,6]])#改变大小 a.ravel() #展平为1维数组 print a a.shape = (3,2) #元素在内存中的位置并没有改变 print a.reshape(2,-1) #a不动,返回改变形状后的数组,-1对应的维自动计算 a.resize((2,3)) print a#组合 b = np.floor(10*np.random.random((2,3))) print np.vstack((a,b)) print np.hstack((a,b)) #类似还有concatenate, r_, c_#分割 print np.hsplit(a,3)#复制 c = a #c跟a完全相同 print c is a c = a.view() #c跟a虽是不同数组,但c跟a公用数据. c = a.copy() #深拷贝,c跟a完全不同 print a.repeat(3,axis=0)a = np.array([1,2,3,4,5]) b = np.array([2,4,7]) ax,bx = np.ix_(a,b) print ax.shape print ax*bx#产生能快速广播的数组 x,y = np.ogrid[:1:4j, :1:3j] #和arange类似,三个产生是开始值,结束值,步长,步长为虚数表示长度 print x print y print 2*x + y x,y = np.mgrid[:1:4j, :1:3j] #与ogrid不同的是,它返回的是广播后的数组 print x print y
运算
# -*- coding: utf-8 -*- import numpy as npa = np.array([[4,3],[2,1]]) b = np.array([[1,1],[0,1]])#逻辑运算 print np.logical_or(a==b, a<b) print np.any(a==b) print np.all(a>b)#对每个元素操作 print a<3 print a**2 print a*b a *= 3 np.add(a,b,a) print a#通用函数 print np.exp(a) print np.sort(a) #对每行排序 ''' 当使用ufunc函数对两个数组进行计算时,ufunc函数会对这两个数组的对应元素进行计算,因此它要求这两个数组的形状相同。如果形状不同,会进行如下的广播(broadcasting)处理: 1. 让所有输入数组都向其中维数最多的数组看齐,shape属性中不足的部分都通过在前面加1补齐。 2. 输出数组的shape属性是输入数组的shape属性的各个轴上的最大值。 3. 如果输入数组的某个轴的长度为1或与输出数组的对应轴的长度相同时,这个数组能够用来计算,否则出错。 4. 当输入数组的某个轴的长度为1时,沿着此轴运算时都用此轴上的第一组值。 ''' #将a视为1维数组 print a.max() #a.func()等同于np.func(a) print a.argmin() print a.sum() #以下4个为统计函数 print a.mean() print a.var() print a.std() print np.cov(a) #也可以对指定的维操作,例如 print a.sum(axis=0) print np.add.reduce(a,axis=1) print np.add.accumulate(a,axis=1) #于reduce不同的是它保留中间结果print np.inner(a,a) #计算两个数组最后1维的内积 print np.multiply.outer([1,2,3,4,5],[2,3,4]) #先使第一个参数的shape变为(5,1),再multiply,再执行squeeze剔除长度为1的轴
线性代数
# -*- coding: utf-8 -*- import numpy as np import numpy.matliba = np.array([[1.,2.],[3.,4.]]) b = np.array([[1,1],[0,1]])print a.transpose() print np.trace(a) print a.trace() print np.linalg.det(a) print np.linalg.eig(a) #特征向量和特征值 print np.dot(a,b) #矩阵乘法 #解方程组 y = np.array([[5.],[7,]]) print np.linalg.solve(a,y) #linalg更多函数见http://docs.scipy.org/doc/numpy/reference/routines.linalg.html#矩阵类继承自2维数组 A = np.mat(a) print A.T print A.I X = np.matrix('5 6; 7 8').T print A*X print A[:,1] #跟数组不一样,这里切片的结果还是矩阵 print numpy.matlib.identity(3,dtype=int) #单位阵
转载于:https://www.cnblogs.com/saieuler/p/3366594.html
总结
以上是生活随笔为你收集整理的python学习--numpy的数组的全部内容,希望文章能够帮你解决所遇到的问题。
如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。
网址:python学习 https://www.yuejiaxmz.com/news/view/1250051
相关内容
【Python学习】趣味工具Python学习(一)
【Python学习】10个Python脚本轻松实现日常任务自动化!
会python基础,如何学习自动化办公
Python学习笔记
Python编程速成:揭秘pythontip高效在线学习秘籍
学习Python,开发智能家居控制系统
Python学习为个人生活带来的方便与便利
湖南红细胞网络科技有限公司:Python学习秘籍
python 入门学习 模拟投掷骰子