Numpy(Numerical Python的简称)是高性能科学计算和数据分析的基础包。

  主要的功能:

    1、ndarray,一个具有矢量运算和复杂广播工能的快速且节省空间的多维数组

    2、用于对整组数据进行快速运算的标准数据函数(无需编写循环)

    3、用于读写磁盘数据的工具以及用于操作内存映射文件的工具

    4、线性代数、随机数生成以及傅里叶变换功能

    5、用于集成由C、C++、Fortran等语言编写的代码的工具

  一、Numpy的ndarray:一种多维数组对象、

    numpy最重要的特点:

      1、其N维数组对象(ndarray)

      2、是一个快速灵活的大数据容器

      3、可以利用这种数组对整块数据进行数学运算,其语法和标量元素之间的运算一样

      4、ndarray中的所有元素必须是相同类型的。每个数组都有一个shape(表示各维度大小的元祖)和dtype(说明数组数据的对象)

  1.1 ndarray的创建 

 import numpy as np

 data = [1,2,3,4]
'''
array([1, 2, 3, 4])
'''
arr = np.array(data) #
arr.ndim # 数组维度 #(4,)
arr.shape # 数组各维度大小的元祖
 import numpy as np

 #额外能创建ndarray的方法

 np.zeros(10)  # 创建指定长度形状的数组, 全0
np.zeros((3,2))
np.zeros((1,2,3)) np.ones() # 创建指定长度形状的数组, 全1 np.empty((2,3,2)) # 创建没有任何具体值的数组

  1.2 ndarray的数据类型

    Numpy的数据类型

类型 说明
int8、uint8 有符号和无符号的8位(一个字节)整型
int16、uint16 有符号和无符号的16位(两个个字节)整型
int32、uint32 有符号和无符号的32位(三个字节)整型
int64、uint64 有符号和无符号的64位(四个字节)整型
float16 半精度浮点数
float32 标准的单精度浮点数。与C的float兼容
float64 标准的双精度浮点数。与C的double和Python的float对象兼容
float128 扩展精度浮点数
complex64、complex128 分别用两个32位 、64位或128位浮点数表示的复数
bool           存储Ture和Flase值的布尔类型
object Python对象类型
String_   固定长度的字符串类型
Unicode_ 固定长度的Unicode类型(字节数由平台决定)

    dtype是一个特殊的对象,它含有ndarray将一块内存解释为特定数据类型所需的信息。

 import numpy  as np

 arr = np.array([1,2,3], dtype=np.float64)
arr.dtype arr.astype(np.float32) # 转换为dtype

  二、数组和标量之间的运算

    大小相等的数组之间的任何算术运算都会将运算应用到元素级别

 import numpy as np

 arr1 = np.array([[1,2,3],[3,4,5]])
arr2 = np.array([[6,7,8],[9,10,11]]) '''
array([[ 7, 9, 11],
[12, 14, 16]])
'''
arr1 + arr2 '''
array([[-5, -5, -5],
[-6, -6, -6]])
'''
arr1 - arr2 '''
array([[ 6, 14, 24],
[27, 40, 55]])
'''
arr1 * arr2 '''
array([[ 0.16666667, 0.28571429, 0.375 ],
[ 0.33333333, 0.4 , 0.45454545]])
'''
arr1 / arr2

    不同大小的数组之间的运算叫做广播(broadcasting)会在后面的内容中单独讲,本身是一个非常重要的概念

  三、基本的索引和切片

    一维数组的索引和切片和Python列表的功能差不多,这里只做简单的举例,不做更多说明。

    区别的地方需要单独说明:1、在numpy的数组中,如果你将一个标量值赋值给一个切片时,例如arr[3:4] = 8,该值就会自动赋值给这个切片选区中,即(3,4]位置上的值都变成8;2、numpy中数组的切片时原始数组的视图,数据不会被复制,视图上的任何修改都会直接反应到原数组上。

 import numpy as np

 arr = np.array([1,2,3,4,5,6])

 arr[2,4] = 44

 '''
array([1,2,44,44,5,6])
'''
print(arr)

    二维数组中,各个索引位置上的元素不再是标量而是一维数组,依次类推多维也是这样

import numpy as np

arr2d = np.array([[1,2,3],[2,3,4],[3,4,5]])

'''
array([3,4,5])
'''
arr2d[2] arr2d[0][2] # 等价于 arr2d[0,2]

    二维数组的索引方式:纵轴表示 axis0,横轴表示axis1

    ndarray的切片语法跟Python列表这样的一维对象差不多,在多维度上也是一样的,但是我们需要记住各个索引位置的元素不再是标量二维一维数组

 import numpty as np

 arr = np.array([[1,2,3],[2,3,4],[3,4,5],[4,5,6]])

 '''
array([[1,2,3],[2,3,4]])
'''
arr[:2]
 import numpty as np

 arr = np.array([[1,2,3],[2,3,4],[3,4,5],[4,5,6]])

 '''
array([[1],[2]])
'''
arr[:2,:,1]

  四、布尔型索引

    可以对ndarray中的数据做布尔类型的判断截取

 import numpy as np

 arr = np.array([[1,2,3,4,5],[2,3,4,5,6],[3,4,5,6,7]])

 '''
array([4, 5, 4, 5, 6, 4, 5, 6, 7])
'''
arr[arr > 3] '''
array([3, 3, 3])
'''
arr[arr == 3] '''
array([1, 2, 2])
'''
arr[arr < 3]

  五、花式索引

    花式索引(Fancy indexing)是一个Numpy术语,它指的是利用整数数组进行索引。

    为了以特定顺序选取行子集,只需要传入一个用于指定顺序的整数列表或者ndarray,以下为例子:

 import numpy as np

 '''
array([[ 0., 0., 0., 0.],
[ 1., 1., 1., 1.],
[ 2., 2., 2., 2.],
[ 3., 3., 3., 3.],
[ 4., 4., 4., 4.],
[ 5., 5., 5., 5.],
[ 6., 6., 6., 6.],
[ 7., 7., 7., 7.]])
'''
arr '''
array([[ 4., 4., 4., 4.],
[ 3., 3., 3., 3.],
[ 0., 0., 0., 0.],
[ 6., 6., 6., 6.]])
'''
arrr[[4,3,0,6]] # 传入了指定顺序的整数列,4,3,0,6是顺序 arr[[-1,-2,-5]] # 负数从尾部开始取,顺序

    一次传入多个索引数组的情况,以下为实例:

 import numpy as np

 '''
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],
[24, 25, 26, 27],
[28, 29, 30, 31]])
'''
arr = np.arange(32).reshape((8,4)) '''
array([4,23,29,10])
'''
arr[[1,5,7,2],[0,3,1,2]] #最终取出的数据是 坐标(1,0)(5,3)(7,1)(2,2) '''
array([[ 4, 7, 5, 6],
[20, 23, 21, 22],
[28, 31, 29, 30],
[ 8, 11, 9, 10]])
'''
arr[[1,5,7,2]][:,[0,3,1,2]] # 获取矩形区域 '''
np.ix() 将两个一维整数数组转换为一个用于选取方形区域的索引器
'''
arr[np.ix([1,5,7,2],[0,3,1,2])] # 得到和上面一样的结果

  六、常用一元函数

函数 说明
abs、fabs 计算整数、浮点数或复数的绝对值。对于非复数值,可以使用更快的fabs
sqrt   计算各元素的平方根。相当于arr**0.5
square 计算各元素的平方。相当于arr**2
exp 计算各元素的指数
log log10 log2 log1p 分别为自然对数(底数为e)、底数为10的log、底数为2的log 、 log(1+x)
sign 计算各元素的正负号:1正数,0零,-1负数
ceil   计算各元素的ceiling值,即大于等于该值的最小整数
floor  计算各元素的floor值,即小于等于该值的最大整数
rint 将各元素值四舍五入到最接近的整数,保留dtype
modf 将数组的小数和整数部分以两个独立数组的形式返回
isnan 返回一个表示NAN的布尔型数组
isfinite    isinf 分别返回一个表示,那些元素是有穷的 或者 哪些元素是无穷的 布尔类型数组
cos  cosh  sin  sinh 普通型和双曲型三角函数

arccos arccosh arcsin

arcsinh  arctan  arctanh

反三角函数
logical_not 计算各元素not x的真值。相当于-arr

  七、二元常用函数

函数 说明
add 将数组中对应的元素相加
subtract 从第一个数组中减去第二个数组中的元素
multiply 数组元素相乘
divide、floor_divide 除法或向下圆除法
power 对第一个数组中的元素A,根据第二个数组中的相应元素B,计算AB
maximum、fmax 计算元素级的最大值  fmax将忽略NaN
minimum、fmin 计算元素级的最小值计算  fmin将忽略NaN 
mod 元素级的求模计算(除法的余数)
copysign 将第二个数组中的值的符号复制给第一个数组中的值

greater、greater_equal

less、less_equal

equal、not_equal

执行元素级的比较运算,最终产生布尔型数组。相当于>  >= <=

< == !=

logical_and logical_or

logical_xor

执行元素级的真值逻辑运算。相当于& | ^

  八、基本数组统计方法

方法 说明
sum 对数组中全部或某轴向的元素求和。零长度的数组和sum为0
mean 算术平均数。零长度的数组的mean为NAN
std、var 分别为标准差和方差,自由度可调(默认为n)
min、max 最大值和最小值
argmin、argmax 分别为最大和最小元素的索引
cumsum 所有元素的累计和
comprod 所有元素的累计积

    作为布尔类型数组的方法

    arr.any()  数组中是否存在一个或多个True

    arr.all()  数组中是否所有的值都为True

    排序:arr.sort()  返回排序后的数组

  九、数组的集合运算

方法 说明
unique(x) 计算x中的唯一元素,并返回有序结果
intersect1d(x,y) 计算x和y中的公共元素,并返回有序结果
union1d(x,y) 计算x和y的并集,并返回有序结果
in1d(x,y) 得到一个表示‘x的元素是包含于y’的布尔数组
setdiff1d(x,y) 集合的差,即元素在x中且不在y中
setxor1d(x,y) 集合的对称差,即存在于一个数组中单不同时存在于两个数组中的元素

内容参考自《利用Python进行数据分析》

Numpy基础学习的更多相关文章

  1. Numpy基础学习与总结

    Numpy类型学习 1.数组的表示 import numpy as np In [2]: #numpy核心是高维数组,库中的ndarray支持多维数组,同时提供了数值运算,可对向量矩阵进行运算 In ...

  2. Python 读取UCI iris数据集分析、numpy基础学习

    python基础.numpy使用.io读取数据集.数据处理转换与简单分析.读取UCI iris数据集中鸢尾花的萼片.花瓣长度数据,进行数据清理,去重,排序,并求出和.累积和.均值.标准差.方差.最大值 ...

  3. Numpy 基础学习

    numpy.array() 功能:创建一个数据 vector = numpy.array([1,2,3,4]) matrix = numpy.array([1,2,3,4],[11,12,13,14] ...

  4. [学习笔记] Numpy基础 系统学习

    [学习笔记] Numpy基础 上专业选修<数据分析程序设计>课程,老师串讲了Numpy基础,边听边用jupyter敲了下--理解+笔记. 老师讲的很全很系统,有些点没有记录,在PPT里就不 ...

  5. 【学习笔记】 第04章 NumPy基础:数组和矢量计算

    前言 正式开始学习Numpy,参考用书是<用Python进行数据清洗>,计划本周五之前把本书读完,关键代码全部实现一遍 NumPy基础:数组和矢量计算 按照书中所示,要搞明白具体的性能差距 ...

  6. 18-09-21 numpy 的基础学习01

    # 1关于numpy 的学习import numpy as np # 一 如何创建数组****# 1 有规律的一维数据的创建======# 1 range() 和arange() 区别 貌似没有区别l ...

  7. python学习笔记(三):numpy基础

    Counter函数可以对列表中数据进行统计每一个有多少种 most_common(10)可以提取前十位 from collections import Counter a = ['q','q','w' ...

  8. Day1 Python基础学习

    一.编程语言分类 1.简介 机器语言:站在计算机的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件 汇编语言:站在计算机的角度,简写的英文标识符取代二进制去编写程序,本质仍然是直接操作 ...

  9. numpy 基础操作

    Numpy 基础操作¶ 以numpy的基本数据例子来学习numpy基本数据处理方法 主要内容有: 创建数组 数组维度转换 数据选区和切片 数组数据计算 随机数 数据合并 数据统计计算 In [1]: ...

随机推荐

  1. 2016广东工业大学新生杯决赛网络同步赛暨全国新生邀请赛 题解&源码

    Problem A: pigofzhou的巧克力棒 Description 众所周知,pigofzhou有许多妹子.有一天,pigofzhou得到了一根巧克力棒,他想把这根巧克力棒分给他的妹子们.具体 ...

  2. HDU 2639 Bone Collector II(01背包变形【第K大最优解】)

    Bone Collector II Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  3. HDU2973(威尔逊定理)

    YAPTCHA Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total S ...

  4. NYOJ201作业题

    作业题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 小白同学这学期有一门课程叫做<数值计算方法>,这是一门有效使用数字计算机求数学问题近似解的方法与过程, ...

  5. linux下如何删除文件夹?

    直接rm就可以了,不过要加两个参数-rf 即:rm -rf 目录名字-r 就是向下递归,不管有多少级目录,一并删除:-f 就是直接强行删除,不作任何提示的意思. 例如:删除文件夹实例: rm -rf ...

  6. 向ajaxform和ajaxgrid中添加数据

    --ajaxform function add(){ $.request({ action:"add", success:onaddcomplete }); } function ...

  7. [国嵌攻略][152][I2C总线介绍]

    IIC电气特性 I2C(inter intergrated circuit)总线是由philps公司开发的两线式串行总线,用于连接微控制器及其外围设备. I2C总线只有两根双向信号线: SDA:ser ...

  8. Element类型知识大全

    Element类型 除了Document类型之外,Element类型就要算是Web编程中最常用的类型了.Element类型用于表现XML或HTML元素,提供了对元素标签名.子节点及特性的访问.   要 ...

  9. jsp页面固定页面为绝对路径

    1 <!-- 固定到绝对路径 --> 2 <base href="<%=request.getContextPath()%>/"/>

  10. b2b2c

    编辑 B2B2C是一种电子商务类型的网络购物商业模式,B是BUSINESS的简称,C是CUSTOMER的简称,第一个B指的是商品或服务的供应商,第二个B指的是从事电子商务的企业,C则是表示消费者.   ...