来源:千锋IT工程师

首先看一下python数据分析下的numpy模块

python大量的库为数据分析和处理提供了完整的工具集,比起R和Matlab等其他主要用于数据分析的编程语言,Python更全能,Python不仅提供数据处理平台,而且还有其他语言和专业应用所没有的应用。

可以用作脚本,可以操作数据库,可以开发web应用,Python库一直在增加,算法的实现采用更具创新性的方法,Python能和很多语言对接,例如高效的C语言

下面我们就开始简单的介绍一下numpy模块针对大量数据如何进行运算的:

Numerical Python

数组的定义

NumPy系统是Python的一种开源的数值计算扩展,数组是Numpy中最基本的数据对象,也是一种大容量数据容器。他的强大之处在于人们能够像操作标量那样操作数组。这样编出的代码不仅简单易于理解,而且基本告别了for语句,大大提高了运算速度。数组(Ndarray)可以是一维的,也可以是多维的,我们平常遇到的都是一维和二维数组。

例:

In [1]: import numpy as np

In [2]: data_array=np.array([0.243,0.246,0.32,0.345,0.231])

In [3]: data_array

Out[3]: array([ 0.243, 0.246, 0.32 , 0.345, 0.231])

In [4]: #array可以由列表直接产生

In [5]: data_array*3

Out[5]: array([ 0.729, 0.738, 0.96 , 1.035, 0.693])

In [7]: #可以与标量直接相乘,其计算方法与线性代数中矢量和标量相乘没有任何区别、

Ndarray必须是同构架的,也就是说,其中元素必须有相同结构。例如数值性数组每个元素都必须是数值。每个数组都有一个shape(表示各维度大小的元组)属性和一个dtype属性(一个说明数组数据类型的对象).假如你的数值型数组出现其他数据类型,系统不会报错,但数组的数据类型不在是数值,因此不再能进行数组的数学运算。

例:(数组中突然有字符串会出现什么结果?能运算吗?)

In [8]: dara_str=np.array([0.2,0.34,'am'])

In [9]: dara_str.dtype

Out[9]: dtype('

In [10]: dara_str*2

---------------------------------------------------------------------------

TypeError Traceback (most recent call last)

in ()

----> 1 dara_str*2

TypeError: ufunc 'multiply' did not contain a loop with signature matching types dtype('

数组的创建

除了上节讲到的用简单列表创建一维数组外,还可以嵌套列表创造多维列表:

In [1]: building_array=[[1,2,3],[4,2,1.2],[2.3,3.2,1.6]]

In [3]: array_build=np.array(building_array)

In [4]: array_build

Out[4]:

array([[ 1. , 2. , 3. ],

[ 4. , 2. , 1.2],

[ 2.3, 3.2, 1.6]])

In [5]: #上面创建的是二维数组

In [6]: #下面我们创建一个3维数组

In [9]: buildarray_1=[[[2.4,1.2,9],[5.6,32,7],[2,1,2]],[[7.6,3.2,6.7],[1,0,0],[1,1,2]],[[3,3,3],[2,1,2],[4,7,65]]]

In [12]: arrat_out=np.array(buildarray_1)

In [13]: arrat_out

Out[13]:

array([[[ 2.4, 1.2, 9. ],

[ 5.6, 32. , 7. ],

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

[[ 7.6, 3.2, 6.7],

[ 1. , 0. , 0. ],

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

[[ 3. , 3. , 3. ],

[ 2. , 1. , 2. ],

[ 4. , 7. , 65. ]]])

In [14]: arrat_out.dtype

Out[14]: dtype('float64')

In [16]: arrat_out.shape

Out[16]: (3, 3, 3)

特殊二维数组

0矩阵(二维数组)

In [17]: np.zeros(5)

Out[17]: array([ 0., 0., 0., 0., 0.])

In [19]: np.zeros((3,3))

Out[19]:

array([[ 0., 0., 0.],

[ 0., 0., 0.],

[ 0., 0., 0.]])

空矩阵(二维数组)

In [21]: np.empty((2,3,2))

Out[21]:

array([[[ 4.02472974e-312, 3.16202013e-322],

[ 0.00000000e+000, 0.00000000e+000],

[ 0.00000000e+000, 2.87822582e+180]],

[[ 1.11667979e+165, 2.00668786e-052],

[ 4.46803262e-062, 2.95834365e-032],

[ 7.69120705e+169, 4.35610475e-061]]])

空矩阵并不为空,认为空矩阵全为空值或者零值是不对的,空矩阵里面的元素都是返回的垃圾值。

Arange asarray ones one_like identity函数:

In [22]: np.arange(15)

Out[22]: array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])

In [23]: #arange函数产生一维矩阵

In [24]: np.arange(16).reshape(2,2,2,2)

Out[24]:

array([[[[ 0, 1],

[ 2, 3]],

[[ 4, 5],

[ 6, 7]]],

[[[ 8, 9],

[10, 11]],

[[12, 13],

[14, 15]]]])

In [25]: #arange函数产生四维数组

#借助asarray把列表转化为数组

In [26]: list1=[3,21,2,1]

In [27]: build_1=np.asarray(list1)

In [28]: build_1

Out[28]: array([ 3, 21, 2, 1])In [32]: build_2=np.asarray(tuple_1)

In [33]: build_2

Out[33]: array([1, 2, 3])

In [34]: build3=np.array(tuple_1)

In [35]: build3

Out[35]: array([1, 2, 3])

#借助于asarray把元组转化为数组

In [29]: tuple_1=1,2,3

In [32]: build_2=np.asarray(tuple_1)

In [33]: build_2

Out[33]: array([1, 2, 3])

#借助于array把元组转化为数组

In [34]: build3=np.array(tuple_1)

In [35]: build3

Out[35]: array([1, 2, 3])

In [36]: np.ones((3,4))

Out[36]:

array([[ 1., 1., 1., 1.],

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

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

In [37]: np.ones_like(build3)

Out[37]: array([1, 1, 1])

In [41]: np.zeros_like(build_2)

Out[41]: array([0, 0, 0])

In [44]: np.identity(4)

Out[44]:

array([[ 1., 0., 0., 0.],

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

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

[ 0., 0., 0., 1.]])

Empty_like函数

In [3]: import numpy as np

In [4]: arrayrr=np.array([1,3,2])

In [5]: test_array1=np.empty_like(arrayrr)

In [6]: test_array1

Out[6]: array([6488174, 7077985, 7340146])

多维数组的数据类型

Dtype是一种特殊的对象,通过它的帮助ndarray能把一块内存解释为自己所需的数据类型来存放自己承载的数据,这个数据的类型就是数组解释的类型

In [8]: array123=np.array([1.4,6.7,6.6],dtype=np.float64)#指定数据类型的数组

In [10]: array123

Out[10]: array([ 1.4, 6.7, 6.6])

In [11]: array_321=np.array([1,6,6.7],dtype=np.int32)#如果这里设定数据类型为整形,那么,结果只能是整数数组,注意绿色标注的数组数据变化

In [12]: array_321

Out[12]: array([1, 6, 6])

数据类型表

Int8和uint8(有符号和无符号的8位整形,i1 和 u1);

Int16和uint16(同上,i2 和 u2)

Int32和uint32(同上,i4 和 u4)

Int64和uint64(同上,i8 和 u8)

Float16(半精度浮点数,f2)

Float32(单精度浮点数,f4)

Float64(双精度浮点数,f8)

Float128(扩展精度浮点数,f16)

Complex64(c8),Complex128(c16),

Complex256(c32)

Bool(?),object(O),string_(S),Unicode(U)

数组数据类型转换

Astype

In [13]: test_array=np.array([1,2,3,6,1])

In [14]: test_array

Out[14]: array([1, 2, 3, 6, 1])

In [15]: test_array.dtype

Out[15]: dtype('int32')

In [16]: test_array_1=test_array.astype(np.float64)

In [18]: test_array_1.dtype

Out[18]: dtype('float64')

Astype方法可以将数值型字符串数组直接转化数值型数组。

In [19]: numeric_strings=np.array(['12','21','33'],dtype=np.string_)

In [21]: numeric_strings.astype(np.float32)

Out[21]: array([ 12., 21., 33.], dtype=float32)

Python培训课程怎么学相关推荐

  1. 学python需要安装什么软件-学武汉Python培训课程需要安装什么软件?分享这10款...

    工欲善其事必先利其器.初学者在学Python的时候,往往会因为没有好用的软件工具,走了很多弯路.因此一些好用的软件工具,可以极大地提高开发效率,那么学武汉Python培训课程需要安装什么软件呢?本文千 ...

  2. python要学多久-零基础python培训需要学多久?

    目前市场上对于Python开发人才的需求与日递增,所以很多人都会选择去学Python.那如果是零基础又该如何学Python呢?小白学Python需要多久呢?传智播客根据以往的python培训经验给大家 ...

  3. 0基础学python要多久-零基础python培训需要学多久?

    目前市场上对于Python开发人才的需求与日递增,所以很多人都会选择去学Python.那如果是零基础又该如何学Python呢?小白学Python需要多久呢?传智播客根据以往的python培训经验给大家 ...

  4. python在哪里学比较好,python从哪里学起

    想学python去哪里比较好? 既然做好学习Python的准备,那么我们就要知己知彼!作为一门入门语言进行学习,Python还是比较合适的!与其他语言想比,Python的学习甚至说安装包就可以开始你的 ...

  5. 编程入门先学python好不好,学python用什么软件编程

    学python有什么用处呢? Python的应用场景比较广泛,目前广泛应用于人工智能.云计算开发.大数据开发等领域,所以你只需要对Python更加深一点点的了解,你就具备更宽泛的工作角色技能. Pyt ...

  6. python初中可以学吗_初中学历零基础想转行Python,能否学会?Python难吗?

    肯定的回答您:这个是一个技术工种学历不是很重要,完全能学会 其实,很多个程序员都是从不会到会,每种知识也是从基础到复杂,大家都是从零基础开始的,有的学员英语和数字基础也很差,从一点都不了解编码到现在非 ...

  7. python培训课程背景

    在注重开发效率和科技不断发展的背景下,Python逐渐得到越来越多企业的亲睐,而国家政策扶持以及教育的推动更是为火爆的Python再添一把火,越来越多的人加入到Python开发大军.很多初学Pytho ...

  8. 有c语言基础学python要多久-零基础python培训需要学多久?

    目前市场上对于Python开发人才的需求与日递增,所以很多人都会选择去学Python.那如果是零基础又该如何学Python呢?小白学Python需要多久呢?传智播客根据以往的python培训经验给大家 ...

  9. 对于初学者Python开发难学吗?适合初学者吗?

    Python入门阶段零基础学员打好基础是非常重要的,好比零基础就是刚落地的新生儿,最怕学错一步,后面长大就很难改过来.在非常高的抽象计算中,高级的Python程序设计非常难学,高级程序语言不等于简单, ...

最新文章

  1. 利用 Vmware 安装 Linux 虚拟机
  2. 成都计算机安全学会怎么样,成都计算机专科大学
  3. lucene 第一天
  4. python云计算开发技术_云计算开发学习笔记:Python3 面向对象技术简介
  5. 机器学习从理论到工程的第一步-编程语言篇
  6. 第 2-3 课:抽象类和接口 + 面试题
  7. React中的Portal组件
  8. 紫书搜索 习题7-6 UVA - 12113 Overlapping Squares 暴力
  9. 河北四部门联合打击虚开骗税违法行为
  10. Unity3D灯光与渲染学习之(二):全局、烘焙以及混合光照
  11. 中兴B860AV2.1-T刷机教程加固件
  12. web打印网页指定区域
  13. [1]深入浅出工作开源框架Camunda: 安装和使用
  14. js操作元素相关案例
  15. 成绩不高?校园招聘了解一下!春招公司大全!
  16. 类似PS的蒙版?可以实现,LVGL『Object mask对象蒙版控件』介绍
  17. SAS卡,RAID卡,HBA卡区别与联系
  18. 恭喜 李志强 成为 Layotto committer!
  19. 解决ThinkPad联想 笔记本电脑无法连接隐藏网络问题-提示“无法连接这个网络”
  20. 安卓月光宝盒项目源码讲解

热门文章

  1. 8个程序员专用软件/网站,个个是神器,第一个最惊喜......
  2. vue 省市区选择插件v-distpicker设置初值与选择后触发方法
  3. 有哪些含金量较高的Python证书?
  4. python 证书-Python 发送带自签名证书的 https 请求
  5. 网络测试——iperf使用
  6. TCP 三次握手原理,你真的理解吗?
  7. Oracle to_char()函数的用法
  8. 操作系统概念 第六章 同步
  9. HDU 4069 Squiggly Sudoku(DLX)(The 36th ACM/ICPC Asia Regional Fuzhou Site —— Online Contest)...
  10. 芯科EFR32BG22芯片,详细分析与nRF52805和CC2640R2F区别