三天搞定python基础-day2

三天搞定python基础系列第一天内容请进传送门:三天搞定python基础-day1


三天搞定python基础-day2

(需要指出,这版三天搞定python系列有点偏向科学计算,机器学习大数据这块,从第二天第三天内容就可以看出来)

大纲:几个python的常用模块的简单应用

  • NumPy:多维数组的有效操作。 高效的数学函数。

  • Matplotlib:可视化:2D和(最近)3D图

  • SciPy:大型库实现各种数值算法,例如:           

    • 线性和非线性方程的解
    • 优化
    • 数值整合
  • Sympy:符号计算(解析的 Analytical)

  • Pandas:统计与数据分析(day3)


一、导入模块

  • 可以通过输入import关键字来导入模块
import numpy
  • 或者使用简称,即将模块通过as关键字来命名一个简称
import numpy as np
  • 有时您不必导入整个模块,就像
from scipy.stats import norm

练习:导入模块时间,并使用它来获取计算机运行特定代码所需的时间

import timeit
def funl (x, y):      
     return x**2 + y**3

t_start  =  timeit.default_timer()
z =  funl(109.2, 367.1)
t_end  =   timeit.default_timer()

cost  =  t_end -t_start
print ( 'Time cost of funl is  %f' %cost)


二、numpy

ndarray类型
  • NumPy提供了一种新的数据类型:ndarray(n维数组)。
    • 与元组和列表不同,数组只能存储相同类型的对象(例如只有floats或只有ints) 
    • 这使得数组上的操作比列表快得多; 此外,阵列占用的内存少于列表。 
    • 数组为列表索引机制提供强大的扩展
import numpy as np

In [1] : np.array([2, 3, 6, 7])   
Out[l] : array([2, 3, 6, 7])   
In [2] : np.array([2, 3, 6, 7.])   
Out [2] :  array([ 2.,  3.,  6., 7.])  <- Hamogenaous   

创建均匀间隔的数组
  • arange:
in[1]:np.arange(5)
Out [l]:array([0,1,2,3,4])

range(start, stop, step)的所有三个参数即起始值,结束值,步长都是可以用的 另外还有一个数据的dtype参数 

np.arange(10,100,20,dtype = float)
array([ 10.,  30.,  50.,  70.,  90.])
np.arange(3, dtype=np.uint8)
array([0, 1, 2], dtype=uint8)
  • linspace(start,stop,num)返回数字间隔均匀的样本,按区间[start,stop]计算:
np.linspace(0.,2.5,5)  
array([0.,0.625,1.25,1.875,2.5])

  这在生成plots图表中非常有用。

  • 注释:即从0开始,到2.5结束,然后分成5等份

多维数组矩阵 (Matrix by multidimensional array)

In [1] : a = np.array([[1, 2, 3],[4, 5, 6]])
                   
In  [2] : a
Out [2] : array([[l, 23] ,[456]])

In  [3] : a.shape  #<- 行、列数等 (Number of rows, columns etc.)
Out [3] : (2,3)

In  [4] : a.ndim   #<- 维度数  (Number of dimensions)
Out [4] : 2

In  [5] : a,size   #<- 元素数量 (Total number of elements)
Out [5] : 6

形状变化 (Shape changing)

import numpy as np

a = np .arange(0, 20, 1) #1维
b = a.reshape((4, 5))   #45列
c = a.reshape((20, 1))  #2
d = a.reshape((-1, 4))  #-1:自动确定
a.shape =(4, 5) #改变a的形状

例子 

import numpy as np

a = np.array([1,2,3,4,5])
b = a.copy ()

c1 =  np.dot(np.transpose(a), b)
print(c1)
c2  = np.dot(a, np.transpose(b))
print(c2)

ax  =  np.reshape(a, (5,1))
bx  =  np.reshape(b, (1,5))
c = np.dot(ax, bx)
print(c)

相同的元素填充数组

In [1] : np.zeros(3)              # zero(),全0填充数组
Out[l] : array([ O., 0., 0.])

In [2] : np.zeros((2, 2), complex)
Out[2] : array([[ 0.+0.j, 0.+0.j],                
                [ 0.+O.j, 0.+0.j]])

In [3] : np.ones((2, 3))          # ones(),全1填充数组
Out[3] : array([[ 1., 1., 1.],
                [ 1., 1., 1.]])

随机数字填充数组

  • rand: 0和1之间均匀分布的随机数 
   In [1] : np.random.rand(2, 4)   
   Out[1] : array([[ 0.373767 , 0.24377115, 0.1050342 , 0.16582644] , 
                   [ 0.31149806, 0.02596055, 0.42367316, 0.67975249l])
  • randn: 均值为0,标准差为1的标准(高斯)正态分布 {standard normal (Gaussian) distribution with mean 0 and variance 1} 
  In [2]: np.random.randn(2, 4)  
  Out[2]: array([[ O.87747152, 0.39977447, -0.83964985, -1.05129899], 
                 [-1.07933484, 0.49448873,   -1.32648606, -0.94193424]])
  • 其他标准分布也可以使用 

数组切片(1D) (Array sliciing(1D))

  • 以格式start:stop可以用来提取数组的片段(从开始到不包括stop)
In [77]:a = np.array([01234])
Out[77]:array([01234])

In [78]:a [13]        #<--index从0开始 ,所以1是第二个数字,即对应1到3结束,就是到第三个数字,对应是2
Out[
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值