标签:启动顺序 高效 专注 集成 基于 加密 设计 终端 技术
上周在进行简单的实例编写时,发现了好多问题,最主要的就是我对numpy、pandas、matpolib等库不是特别熟悉,基础不够,于是本周开始重新学习numpy及pandas库
import numpy
#通过numpy.array直接创建矩阵
vec = numpy.array([[1,2,3,4],[2,3,4,5],[4,5,6,8]])
print(vec)
print(type(vec))
world_alcohol = numpy.genfromtxt("world_alcohol.txt")
#对矩阵的切片或整行整列提取;或者将矩阵转化为bool类型的矩阵
print(vec[:,3])
print(vec[0:2,0:3])
print(vec[0,-1])
print(vec[[1,0],[2,3]])
print(vec == 5)
print(3 in vec)
#制造全零或全1的矩阵,dtype规定每一个元素的类型
zeros = numpy.zeros((4, 8), dtype="int32")
print(zeros)
ones = numpy.ones((2,3))
print(ones)
#通过numpy.arange创建矩阵,dtype查看元素的类型,ndim查看矩阵维度,min和max方法查找最小和最大的元素
matrix = numpy.arange(20).reshape(4,5)
print(matrix)
print(matrix.dtype)
print(matrix.ndim)
print(matrix.min())
print(matrix.max())
#通过numpy.linspace创建矩阵,在A-B之间均匀取出C个数;numpy.sin对整个矩阵的元素求sin值,cos、tan同理
from numpy import pi
matrix2 = numpy.linspace(2, pi, 20).reshape(4, 5)
print(matrix2)
print(numpy.sin(matrix2).reshape(4, 5))
print(numpy.cos(matrix2).reshape(4, 5))
print(numpy.tan(matrix2).reshape(4, 5))
arr1 = numpy.array([[1,5],[7,2]])
arr2 = numpy.arange(1,5).reshape(2,2)
print(arr1)
print(arr2)
print(arr1*arr2) #每个元素对应相乘
print(arr1.dot(arr2))#两种方法实现矩阵相乘
print(numpy.dot(arr1,arr2))
a = numpy.arange(1,13).reshape(3,4)
print(numpy.exp(a))#求e的指数次方
print(numpy.sqrt(a))#求各元素的平方根
print(numpy.square(a))#求各元素的平方
b = numpy.random.randn(16).reshape(4,4)
print(b.astype(numpy.int32))#利用astype来进行类型转换
print(numpy.fabs(b))#求绝对值
#对各个元素求自然对数,以e、2、10为底
from numpy import e
c = numpy.linspace(e,e*9,8).reshape(2,4)
print(numpy.log(c))
print(numpy.log2(c))
print(numpy.log10(c))
#利用around取整,利用floor向下取整,利用ceil向上取整,类型转换也可用来进行向下取整
d = numpy.array([[0.547,4.26,11.4,8.9732],[1.8,12.56,3.14,0.4768]])
print(numpy.around(d))
print(numpy.around(d,1))
print(numpy.around(d,-1))
print(d.astype(numpy.int32))
print(numpy.floor(d))
print(numpy.ceil(d))
#利用ravel将矩阵转化为向量,T求转置矩阵,使用reshape时可以只指定一个维度,另一个维度填-1,会自动划分
e = numpy.floor(numpy.random.random((3,4))*20)
print(e)
print(numpy.ravel(e))
print(e.T)
print(e.reshape(2,-1))
#矩阵的拼接
arr1 = numpy.floor(numpy.random.random((2,3))*10)
arr2 = numpy.floor(numpy.random.random((2,3))*10)
print(arr1,‘\n‘,arr2)
print(numpy.hstack((arr1,arr2)))
print(numpy.vstack((arr1,arr2)))
print("------------------------我是分割线------------------------")
#矩阵的拆分,传单个数字就是平均分成几份,不能均分会报错,传元组就是切割的位置
vector = numpy.arange(0,12).reshape((2,6))
print(vector)
print(numpy.hsplit(vector,(1,)))
话说之前Anaconda自带的jupyter notebook一直被我忽视了,这周发现它竟然意外地好用,一个cell一个cell地run,效率奇高,从而不会被整个代码中的其它的输出干扰,更加方便对于结果的查看,只是jupyter notebook没有自动补齐以及debug的功能
标签:启动顺序 高效 专注 集成 基于 加密 设计 终端 技术
原文地址:https://blog.51cto.com/14887308/2518326