本文是对《利用python进行数据分析》第四章,“Numpy基础:数组和矢量计算”的一个回顾性阅读笔记,对于代码已经加上自己的部分注释。  Numpy这章主要是将数据的整理和清理、子集构造和过滤、转换等快速的矢量化数组运算。 Numpy的大多数功能都在Pandas中已覆盖,且pandas比numpy应用更方便,所以重点是pandas而非numpy,numpy只做选择性记录。

目录

ndarray:一种多维数组对象

快速的元素级函数

利用数组进行数据处理

将条件逻辑表述为数组运算 np.where

数学和统计方法

用于布尔型数组的方法

sorting排序

随机数生成

代码与思维导图


ndarray:一种多维数组对象

    定义: 
        ndarray是一个通用的同构数据多维容器,其中的所有元素必须是相同类型,也成为数组
    创建Numpy数组ndarry:
        常见的是用np.array函数 。  注意np.array数组里的数据类型要用dtype 而不是type。如果里面只要有一个float就认为是float类型, 

data1=[6,7.5,8,0,1]
arr1=np.array(data1)
print(arr1)
print(arr1.dtype)
#输出
[6.  7.5 8.  0.  1. ]
float64

  常见数组创建函数 

上面如果没有特别指定,数据类型基本都float64类型。

    数据类型转换
        使用.astype()函数。
            注意numpy的array里数据类型字符串表示后面要到下划线_  ,为string_

numeric_strings = np.array(['1.25', '-9.6', '42'], dtype=np.string_)
numeric_strings=numeric_strings.astype(float) # 转换为float
print(numeric_strings.dtype)

  数组和标量之间的运算
       注意 会广播

 arr=np.array([[1,2,3.],[4.,5.,6.]])1/arr # 会去除以每个元素

  矢量的概念:
                ndarry数组之所以重要是因为它可以不用编写循环就可对数据执行批量运算。这种操作通常就叫矢量化。
    基本的索引和切片
        切片索引,如: arr[1:6]
        布尔型索引,例子

names=np.array(['Bob','Joe','Will','Bob','Will','Joe','Joe'])
s=names=='Bob' # 这个返回的是布尔型ndarray
print(s)
data=randn(7,4)  # 七行四列的随机数据
print(data[names=='Bob'])# 返回的是布尔为true对应数据index位置的结果,为Flse  ,即只返回了data第1行和第3行位置的数据
#输出:[ True False False  True False False False]
第二个对应的返回的是布尔为true对应数据index位置的结果,为Flse  ,即只返回了data第1行和第3行位置的数据

花式索引,用到的很少,需要时再看

快速的元素级函数

此处是指会对数组中元素这个级别进行操作的函数

了解常见的元素级函数,记住多数常见数据函数名称,python中相关的包如numpy里都有实现,要用的时候,查下文档即可
        一元函数

        二元函数

利用数组进行数据处理

将条件逻辑表述为数组运算 np.where

        np.where函数
            np.where函数直接进行条件逻辑的筛选确认,例子

 print(np.where(arr>0,2,-2)) # np.where的第二个和第三个参数不必是数组,他们都可以是标量值,
np.where(arr>0,2,arb)# 将其中大于0的给值2,不大于0的为arb中对应为位置的值

数学和统计方法

        基本数组统计方法

如sum,mean,std,cumsum,cumprod

       参数注意
            如ndarrydata1.mean() ,注意mean里面的参数0表示结果中变得是行数,如果是1则表示结果中变得是列数。而当什么都不指定时,则是所有的数求平均数
        进一步熟悉的函数

arr=np.array([[0,1,2],[3,4,5],[6,7,8]])
print(arr.cumsum(0)) # 元素的累计和
print(arr.cumprod(1)) # 元素的累计积
print(np.modf(arr)) #  modf 是分解数字的整数部分和小数部分

  用于布尔型数组的方法

       bools.any()
            any用于测试数组中是否存在一个或者多个True
        bools.all()
             all 用于检查数组中所有值是否都是True

bools=np.array([False,False,True,False])
print(bools.any()) # any用于测试数组中是否存在一个或者多个True
print(bools.all())  # all 用于检查数组中所有值是否都是True
#输出:
True
False
#例子2
arr=np.array([[0,1,2],[3,4,5],[6,7,8]])
print((arr>5).sum() )
#输出 3
# 求大于5的元素的个数! 注意! 此前面的得到的是布尔值,布尔值用数学方法的时候会被强制转换为1或者0,sum()经常用来对布尔值进行计数 !! 

    sorting排序

ndarrayData.sort和np.sort
            #data.sort注意改变了原数组。这个不等同于np.sort,np.sort不会改变原数组!因为np.sort返回的是数组的已排序的副本

import numpy  as np
arr=np.random.randint(10,size=10).reshape(2,5)
print(arr)
print(arr.sort(1)) # 输出None,但是原来的arr 改变了
#注意参数 1按列的方向变动,即值所处的行号不会变动,但是列号会变动。即保证各行的元素内是有序的
print(arr)
# 输出
# [[9 3 6 1 9]
#  [6 5 0 0 3]]
# None
# [[1 3 6 9 9]
#  [0 0 3 5 6]]

随机数生成

 np.randn(a,b)
        生成一个随机形状为(a,b)的随机小数数组
    numpy.random.randint(low, high=None, size=None, dtype='l')

参数:

low: int生成的数值最低要大于等于low。(hign = None时,生成的数值要在[0, low)区间内)
high: int (可选) ,如果使用这个值,则生成的数值在[low, high)区间。
size: int or tuple of ints(可选)
输出随机数的尺寸,比如size = (m * n* k)则输出同规模即m * n* k个随机数。默认是None的,仅仅返回满足要求的单一随机数。
dtype: dtype(可选):想要输出的格式。如int64、int等等
out: int or ndarray of ints
返回一个随机整数或随机整数数组

datas=np.random.randint(2,10)  # 在2-10内生成一个随机整数!
np.random.normal(size=(a,b))

样例

samples= np.random.normal(size=(4,4)) # 用normal 来得到一个服从标准正态分布的4*4的数组
结果:
array([[-0.1995, -1.542 , -0.9707, -1.307 ],[ 0.2863,  0.378 , -0.7539,  0.3313],[ 1.3497,  0.0699,  0.2467, -0.0119],[ 1.0048,  1.3272, -0.9193, -1.5491]])

代码与思维导图

本文与书本对应章节的代码脚本见本人资源

鸣谢与参考:

《利用python进行数据分析》

Numpy基础:数组和矢量计算-笔记与代码相关推荐

  1. 一、NumPy(数组和矢量计算)

    文章目录 1.1 多维数组对象 1.1.1 创建ndarray 1.1.2 ndarray的数据类型 1.1.3 数组和标量之间的运算 1.1.4 基本的索引和切片 1.1.5 数组的转置和轴对换 1 ...

  2. 《利用python进行数据分析》读书笔记--第四章 numpy基础:数组和矢量计算

    第四章 Numpy基础:数组和矢量计算 第一部分:numpy的ndarray:一种多维数组对象 实话说,用numpy的主要目的在于应用矢量化运算.Numpy并没有多么高级的数据分析功能,理解Numpy ...

  3. Python数据分析学习四 NumPy基础:数组和矢量计算

    Python数据分析学习系列四NumPy基础:数组和矢量计算 资料转自(GitHub地址):https://github.com/wesm/pydata-book 有需要的朋友可以自行去github下 ...

  4. python输入数组并计算_利用Python进行数据分析——Numpy基础:数组和矢量计算

    利用Python进行数据分析--Numpy基础:数组和矢量计算 ndarry,一个具有矢量运算和复杂广播能力快速节省空间的多维数组 对整组数据进行快速运算的标准数学函数,无需for-loop 用于读写 ...

  5. python向量计算库教程_python中numpy基础学习及进行数组和矢量计算

    前言 在python 中有时候我们用数组操作数据可以极大的提升数据的处理效率,类似于R的向量化操作,是的数据的操作趋于简单化,在python 中是使用numpy模块可以进行数组和矢量计算. 下面来看下 ...

  6. python 数据分析5 NumPy 基础:数组和矢量计算

    系列文章:Python 数据分析 文章目录 五.NumPy 基础:数组和矢量计算 1.n维数组对象 ndarray 创建 dtype 数组运算 基本的索引和切片 一维数组 二维数组 布尔型索引 花式索 ...

  7. python数组计算cos_NumPy 基础:数组和矢量计算

    NumPy 基础:数组和矢量计算 NumPy 的 ndarray : 一种多维数组对象 import numpy as np data = np.array() data.shape #对象的结构,如 ...

  8. 《利用Python进行数据分析》笔记--NumPy数组和矢量计算

    阅读SeanCheney博主上传的文章有感,特此写一篇笔记,如侵必删. 第四章 NumPy基础 NumPy的ndarray:一种多维数组对象 1. 创建ndarray array函数,接受序列性的对象 ...

  9. python输入一个数组输出24进制式的时间_【翻译】《利用Python进行数据分析·第2版》第4章(下)NumPy基础:数组和矢量计算...

    前文传送门: 4.3 利用数组进行数据处理 NumPy数组使你可以将许多种数据处理任务表述为简洁的数组表达式(否则需要编写循环).用数组表达式代替循环的做法,通常被称为矢量化.一般来说,矢量化数组运算 ...

最新文章

  1. 互联网元年:如何提升自己?
  2. 分享3一个博客HTML5模板
  3. 前端学习(3025):vue+element今日头条管理-关于默认子路由的问题
  4. hog特征提取python代码_hog特征提取-python实现
  5. 利用3D转换实现旋转木马
  6. 在线的Sql格式化工具
  7. R语言入门之R与RStudio的详细安装过程(图文很详细哦!!!)
  8. 台式计算机装机,DIY台式电脑装机教程之新手装机图解!手把手教你组装电脑
  9. STM32F103驱动四位共阳极数码管程序
  10. 纯css3彩色3d雪糕
  11. 指针、空指针、野指针
  12. 用事实说话,成熟的ORM性能不是瓶颈,灵活性不是问题:EF5.0、PDF.NET5.0、Dapper原理分析与测试手记(转)...
  13. kibana笔记 -- KQL
  14. 获取秒懂百科视频地址/获取百度百科视频地址
  15. 怎样用excel剔除异常数据_(如何剔除excel表格中重复的数据)excel表格怎么剔除异常数据...
  16. 二、简单线性回归模型(计量经济学学习笔记)
  17. 加速度频域积分的实现及其局限性分析
  18. java excel 逐行读取_java利用poi读取Excel文件
  19. 蓝牙之二十-设备类型
  20. 北方民族大学计算机技术学制,北方民族大学2014年硕士研究生考试调剂信息

热门文章

  1. 深度学习21天——卷积神经网络(CNN):天气识别(第5天)
  2. 华为与小米赛跑,谁是胜利者?
  3. 高中英语选修计算机,人教版高中英语选修计算机英语CategoriesofComputers.ppt
  4. 海洋大学计算机学院魏老师,中国海洋大学信息科学与工程学院导师教师信息介绍简介-魏志强...
  5. C学习笔记-字符串处理函数
  6. 经纬恒润2023提前批秋招面试凉经
  7. 语态-----专升本
  8. 你肯定没用过这个全新的 Git 客户端工具!
  9. 论文阅读 | Optimizing Video Prediction via Video Frame Interpolation
  10. 计算机模拟人工录入,地震动输入及动力人工边界的数值模拟方法研究