您的位置:首页 > 编程语言 > Python开发

【python学习笔记】15:numpy创建各种数组

2017-07-20 12:23 621 查看
前段时间买了董老师的数据分析与科学计算可视化课程,假期抽时间学习一下。

用于数据分析与科学计算可视化的模块有很多:如statistics提供了一些常用的统计分析的函数,numpy科学计算包作数值计算扩展库(将python当成matlab来用),scipy作为numpy的拓展,pandas提供了高效地操作大型数据集所需的工具,matplotlib做数据可视化。这门课主要也是用这几个包。

 

numpy的简单用法

*生成数组

>>> import numpy as np
>>> np.array([1,2,3,4,5])
array([1, 2, 3, 4, 5])
>>> np.array([[1,2,3],[4,5,6]])
array([[1, 2, 3],
[4, 5, 6]])
>>> np.arange(8)
array([0, 1, 2, 3, 4, 5, 6, 7])
>>> np.arange(1,10,2)
array([1, 3, 5, 7, 9])arange类似内置函数range的用法,最多可传入三个参数,最少一个参数,左闭右开区间。

*特殊的数组
>>> np.linspace(0,10,11)
array([  0.,   1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   9.,  10.])
>>> np.linspace(0,10,11) #等差数组
array([  0.,   1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   9.,  10.])
>>> np.linspace(0,1,11)
array([ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9,  1. ])
>>> np.logspace(0,100,10) #等比数组
array([  1.00000000e+000,   1.29154967e+011,   1.66810054e+022,
2.15443469e+033,   2.78255940e+044,   3.59381366e+055,
4.64158883e+066,   5.99484250e+077,   7.74263683e+088,
1.00000000e+100])
>>> np.logspace(1,5,5,base=2)
array([  2.,   4.,   8.,  16.,  32.])
>>> np.logspace(0,100,10,base=10)
array([  1.00000000e+000,   1.29154967e+011,   1.66810054e+022,
2.15443469e+033,   2.78255940e+044,   3.59381366e+055,
4.64158883e+066,   5.99484250e+077,   7.74263683e+088,
1.00000000e+100])
>>> np.zeros(3)
array([ 0.,  0.,  0.])
>>> np.ones(3)
array([ 1.,  1.,  1.])
linspace生成等差数组,三个参数分别是起始指、终止值、要生成的数的数量,公差会被自动计算。

logspace生成等比数组,三个参数分别是起始指、终止值、要生成的数的数量,然后取10的这些数次幂。如果指定了base=多少,就取指定数的这些数次幂。

zeros返回全0数组,ones返回全1数组,传入的参数为数组中数字的数目。
>>> np.zeros((3,3))
array([[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.]])
>>> np.ones((3,3,3))
array([[[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.]],

[[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.]],

[[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.]]])如果zeros和ones传入的是个元组,那么可以生成多维数组。
>>> np.identity(3) #单位矩阵
array([[ 1., 0., 0.],
[ 0., 1., 0.],
[ 0., 0., 1.]])
>>> np.empty((3,3)) #空数组
array([[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.]])identity生成单位矩阵,empty生成空数组,空数组只申请空间而不初始化,里面的元素值是不确定的。
>>> np.hamming(20) #海明数组
array([ 0.08      ,  0.10492407,  0.17699537,  0.28840385,  0.42707668,
0.5779865 ,  0.7247799 ,  0.85154952,  0.94455793,  0.9937262 ,
0.9937262 ,  0.94455793,  0.85154952,  0.7247799 ,  0.5779865 ,
0.42707668,  0.28840385,  0.17699537,  0.10492407,  0.08      ])
>>> np.blackman(10) #黑人数组
array([ -1.38777878e-17,   5.08696327e-02,   2.58000502e-01,
6.30000000e-01,   9.51129866e-01,   9.51129866e-01,
6.30000000e-01,   2.58000502e-01,   5.08696327e-02,
-1.38777878e-17])
>>> np.kaiser(12,5) #Kaiser window
array([ 0.03671089,  0.16199525,  0.36683806,  0.61609304,  0.84458838,
0.98167828,  0.98167828,  0.84458838,  0.61609304,  0.36683806,
0.16199525,  0.03671089])
>>> np.random.randint(0,50,5) #从0到50的随机数取5个作数组
array([41, 11, 14, 36, 32])
>>> np.random.rand(10) #生成10个从0~1的随机浮点数
array([ 0.22603614,  0.29480329,  0.41594871,  0.62596426,  0.21839477,
0.46882746,  0.72690902,  0.26935643,  0.31786067,  0.24229116])
>>> np.random.standard_normal(5) #从标准正态分布中随机采样
array([ 1.92352533,  1.26617687,  2.174852  ,  0.24888205, -0.14012354])
random.randint生成随机整数数组,random.rand生成0~1间的随机浮点数数组。
>>> np.diag([1,2,3]) #对角矩阵
array([[1, 0, 0],
[0, 2, 0],
[0, 0, 3]])diag生成参数列表排在主对角元上产生的对角矩阵。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: