(二)Python数据分析与展示-Numpy|python数据分析与展示(学习笔记)

1.Python数据分析与展示-导学
2.数据维度-Numpy入门1
3.Numpy的数组对象:ndarray-Numpy入门2
4.darray数组的创建和变换-Numpy入门3
5.ndarray数组的操作(索引和切片)-Numpy入门4
6.ndarray数组的运算-Numpy入门5
7.单元小结-Numpy入门6
网页链接【Python数据分析与展示】.MOOC. 北京理工大学
https://www.bilibili.com/video/av15825380/?from=search&seid=9346282164912355716#page=4

最近更新:2018-01-22

1.Python数据分析与展示-导学

2.数据维度-Numpy入门1









3.Numpy的数组对象:ndarray-Numpy入门2

3.1Numpy的简介

3.2 Numpy的引用

这里也可以去掉np的部分


3.3Python为什么需要一个数组对象(类型)

  • 传统的语法,是把关注点放在一个个元素之间的运算上,这并不是一种科学计算的思想方式.
  • numpy没有使用for循环,把一维数组a和一维数组b,当作两组数据,当这两组数据维度一样,可直接运算.






3.4ndarray对象的属性


3.5ndarray的元素类型()



3.6为什么numpy支持那么多中数据类型呢?

  • 对比python语法
    • 整数,是没有取值范围,也没有划分的.
    • 浮点数,只有一种浮点数.
    • 负数,只有一种复数.
  • 对比numpy语法


  • 在python语法中,由于整数由于涉及到实际支持它的存储空间是不确定的,程序员很难去预估一个程序的使用空间.但是经过numpy的精确定义,这样的空间规模是可以被预测的.

3.7ndarray实例

o是一种对象类型,当ndarray元素的类型并不相同的时候或者每一个元素维度数据数量不一样的时候,ndarray将每一个元素认为是一个对象.那么事实上,ndarray每一个元素都是一个对象的时候,变成一个同质数组类型.但是使用数组类型的时候,对象是不一样的,所以交非同质的ndarray对象.


4.ndarray数组的创建和变换-Numpy入门3

4.1 ndarray数组的创建方法

4.1.1 从Python中的列表/元组等类型创建ndarray数组

如果读进的是整数,则numpy则是创建一个整数类型.如果读进的是浮点数,则numpy则是创建一个浮点数类型,并且这个类型是与数据比较接近的.



列表和元组混合使用的原则是使用的个数相同


4.1.2 使用NumPy中函数创建ndarray数组,如:arrange,ones,zeros等
  • 需要注意的是ones,zereos,eye生成的数组类型都是浮点类型,除非用户通过dtype指定数据的类型.
  • arrang生成的数组类型是整数类型.


>>> np.arange(10)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

>>> np.ones((3,6))
array([[1., 1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1., 1.]])

>>> np.zeros((3,6),dtype=np.int32)
array([[0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0]])

>>> np.eye(5)
array([[1., 0., 0., 0., 0.],
       [0., 1., 0., 0., 0.],
       [0., 0., 1., 0., 0.],
       [0., 0., 0., 1., 0.],
       [0., 0., 0., 0., 1.]])

x=np.ones((2,3,4))表示最外层的元素中,有两个元素,每一个元素又有3个维度,每个维度下又有4个元素.所以shape是由最外层到内层是一个逐渐变化的一个数据表示方式.

>>> x=np.ones((2,3,4))
>>> print(x)
[[[1. 1. 1. 1.]
  [1. 1. 1. 1.]
  [1. 1. 1. 1.]]

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

>>> x.shape
(2, 3, 4)
4.1.3使用NumPy中其他函数创建ndarray数组

1代表起始数字,10代表结束数字,4代表生成的数字元素,创建的元素类型是浮点型

>>> a=np.linspace(1,10,4)
>>> a
array([ 1.,  4.,  7., 10.])

endpoint代表的意思是10是否为最后生成元素的一个,是将10不作为最后一个元素出现.在1-10之间,等间距的多分出一份,然后就会生成一个新的值出来

>>> b=np.linspace(1,10,4,endpoint=False)
>>> b
array([1.  , 3.25, 5.5 , 7.75])
>>> c=np.concatenate((a,b))
>>> c
array([ 1.  ,  4.  ,  7.  , 10.  ,  1.  ,  3.25,  5.5 ,  7.75])
4.1.4为什么numpy默认元素的类型是浮点型呢?

因为numpy是科学计算的一个库,往往使用的数据都是浮点数.除了arange这种类型,其他数据类型默认为浮点型数据.

4.2 ndarray数组的变换

4.2.1ndarray数组的维度变换


reshape是不改变原数组,而重新创建了一个数组并进行返回.

>>> a.reshape((3,8))
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]])
>>> a
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]]])

resize是直接改变了一个数组

>>> a.resize((3,8))
>>> a
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]])
>>> a=np.ones((2,3,4),dtype=np.int32)
>>> a
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]]])

>>> a.flatten()
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])
>>> a
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]]])
>>> b=a.flatten()
>>> b
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])
4.2.2ndarray数组的类型变换

dtype=np.int代表的是整数类型,没有写int32orint64,由电脑自动识别.
astype.即使一模一样的数据,可以作为原数组的拷贝.

>>> a=np.ones((2,3,4),dtype=np.int)
>>> a
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]]])

np.float是浮点数类型

>>> b=a.astype(np.float)
>>> b
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.]]])

列表与数组不同,仅在于列表是python最原始的一种数据类型,在空间和运算速度比numpy慢很多.在传统或原生的python语言和语法中.列表的转换也是非常常见的.

>>> a=np.full((2,3,4),25,dtype=np.int32)
>>> a
array([[[25, 25, 25, 25],
        [25, 25, 25, 25],
        [25, 25, 25, 25]],

       [[25, 25, 25, 25],
        [25, 25, 25, 25],
        [25, 25, 25, 25]]])

>>> a.tolist()
[[[25, 25, 25, 25], [25, 25, 25, 25], [25, 25, 25, 25]], [[25, 25, 25, 25], [25, 25, 25, 25], [25, 25, 25, 25]]]

5.ndarray数组的操作(索引和切片)-Numpy入门4

5.1一维数组的索引和切片

这里的:起始,终止编号,步长是针对一维数组进行切片的基本方法.


5.2多维数组的索引

5.3多维数组的切片

::两个冒号代表的意思是,第一个冒号是覆盖所有的范围,第二个冒号是以2为步长,以获得取值.

6.ndarray数组的运算-Numpy入门5

6.1数组与标量之间的运算

这里的a.mean()是一个标量值


>>> a.mean()
11.5
>>> a=a/a.mean()
>>> a
array([[[0.        , 0.08695652, 0.17391304, 0.26086957],
        [0.34782609, 0.43478261, 0.52173913, 0.60869565],
        [0.69565217, 0.7826087 , 0.86956522, 0.95652174]],

       [[1.04347826, 1.13043478, 1.2173913 , 1.30434783],
        [1.39130435, 1.47826087, 1.56521739, 1.65217391],
        [1.73913043, 1.82608696, 1.91304348, 2.        ]]])

6.2numpy一元函数对ndarray中的数据执行元素级运算的函数

  • ceil是表示不超过这个元素的值,floor是小于这个元素的最大整数值.
  • 以下这些函数可以用记,原因是与传统的python语言很接近,偶尔看一眼即可.

6.3numpy一元函数实例

需要注意运算之后是新生成数组呢?还是原数组真实被改变,几乎所有的原函数都是新生成数组,如果需要改变,需要将结果再赋值给原来的数组.

>>> a=np.arange(24).reshape((2,3,4))
>>> a
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],

       [[12, 13, 14, 15],
        [16, 17, 18, 19],
        [20, 21, 22, 23]]])

>>> np.square(a)
array([[[  0,   1,   4,   9],
        [ 16,  25,  36,  49],
        [ 64,  81, 100, 121]],

       [[144, 169, 196, 225],
        [256, 289, 324, 361],
        [400, 441, 484, 529]]], dtype=int32)

>>> a=np.sqrt(a)
>>> a
array([[[0.        , 1.        , 1.41421356, 1.73205081],
        [2.        , 2.23606798, 2.44948974, 2.64575131],
        [2.82842712, 3.        , 3.16227766, 3.31662479]],

       [[3.46410162, 3.60555128, 3.74165739, 3.87298335],
        [4.        , 4.12310563, 4.24264069, 4.35889894],
        [4.47213595, 4.58257569, 4.69041576, 4.79583152]]])

np.modf(a)生成的第一部分是小数,第二部分是整数,都是浮点型.

>>> np.modf(a)
(array([[[0.        , 0.        , 0.41421356, 0.73205081],
        [0.        , 0.23606798, 0.44948974, 0.64575131],
        [0.82842712, 0.        , 0.16227766, 0.31662479]],

       [[0.46410162, 0.60555128, 0.74165739, 0.87298335],
        [0.        , 0.12310563, 0.24264069, 0.35889894],
        [0.47213595, 0.58257569, 0.69041576, 0.79583152]]]), array([[[0., 1., 1., 1.],
        [2., 2., 2., 2.],
        [2., 3., 3., 3.]],

       [[3., 3., 3., 3.],
        [4., 4., 4., 4.],
        [4., 4., 4., 4.]]]))

6.4numpy二元函数

>>> a=np.arange(24).reshape((2,3,4))
>>> a
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],

       [[12, 13, 14, 15],
        [16, 17, 18, 19],
        [20, 21, 22, 23]]])
>>> b=np.sqrt(a)
>>> b
array([[[0.        , 1.        , 1.41421356, 1.73205081],
        [2.        , 2.23606798, 2.44948974, 2.64575131],
        [2.82842712, 3.        , 3.16227766, 3.31662479]],

       [[3.46410162, 3.60555128, 3.74165739, 3.87298335],
        [4.        , 4.12310563, 4.24264069, 4.35889894],
        [4.47213595, 4.58257569, 4.69041576, 4.79583152]]])

>>> np.maximum(a,b)#a,b两数据类型不同,最后生成的是浮点数#
array([[[ 0.,  1.,  2.,  3.],
        [ 4.,  5.,  6.,  7.],
        [ 8.,  9., 10., 11.]],

       [[12., 13., 14., 15.],
        [16., 17., 18., 19.],
        [20., 21., 22., 23.]]])
>>> a>b
array([[[False, False,  True,  True],
        [ True,  True,  True,  True],
        [ True,  True,  True,  True]],

       [[ True,  True,  True,  True],
        [ True,  True,  True,  True],
        [ True,  True,  True,  True]]])

7.单元小结-Numpy入门6

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容