【数据挖掘】数据处理之Numpy

数据处理之Numpy

Numpy简介、Jupyter快捷键使用

(一)Numpy
Numpy 的英文全称为 Numerical Python,指Python 面向数值计算的第三方库。Numpy 的特点在于,针对 Python 内建的数组类型做了扩充,支持更高维度的数组和矩阵运算,以及更丰富的数学函数。Numpy 是 Scipy.org 中最重要的库之一,它同时也被 Pandas,Matplotlib 等我们熟知的第三方库作为核心计算库。
NumPy(Numeric Python)提供了许多高级的数值编程工具,如:矩阵数据类型、矢量处理,以及精密的运算库。专为进行严格的数字处理而产生。多为很多大型金融公司使用,以及核心的科学计算组织如:Lawrence Livermore,NASA用其处理一些本来使用C++,Fortran或Matlab等所做的任务。

(二)Numpy包含内容
Numpy包括了:1、一个强大的N维数组对象Array;2、比较成熟的(广播)函数库;3、用于整合C/C++和Fortran代码的工具包;4、实用的线性代数、傅里叶变换和随机数生成函数。Numpy和稀疏矩阵运算包scipy配合使用更加方便。

(三)Jupyter快捷键使用
QQ图片20190325084630.png

内容

1. 数组的创建(创建全0数组,全1数组,随机数数组)

np.array([[1,2,3],[4,5,6]]) # 默认元素类型为int32

np.array([[1,2,3],[4,5,6]], dtype=np.int8) # 指定元素类型为int8

np.arange(5) # 默认元素类型为int32

np.arange(3,8, dtype=np.int8) # 指定元素类型为int8

np.linspace(1,2,5) # 从1到2生成5个浮点数

np.zeros((2,3)) # 全0数组

np.ones((2,3)) # 全1数组

np.eye(3) # 主对角线元素为1其他元素为0

np.random.random((2,3)) # 生成[0,1)之间的随机浮点数

np.random.randint(0,10,(3,2)) # 生成[0,10)之间的随机整数

2. 数组的属性(查看数组的维度,数组元素的个数)

numpy的数组对象除了一些常规的属性外,也有几个类似转置、扁平迭代器等看起来更像是方法的属性。扁平迭代器也许是遍历多维数组的一个简明方法。

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

a.dtype # 数组元素的数据类型

a.dtype.itemsize # 数组元素占据的内存字节数

a.itemsize # 数组元素占据的内存字节数

a.shape # 数组的维度

a.size # 数组元素个数

a.T # 数组行变列,类似于transpose()

a.flat # 返回一个扁平迭代器,用于遍历多维数组

for item in a.flat:
print item

3. 数组的维度操作(将数组的行变列,返回最后一个元素,返回第2到第4个元素,返回逆序的数组)

numpy数组的存储顺序和数组的维度是不相干的,因此改变数组的维度是非常便捷的操作,除resize()外,这一类操作不会改变所操作的数组本身的存储顺序。

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

a.shape # 查看数组维度

a.reshape(3,2) # 返回3行2列的数组

a.ravel() # 返回一维数组

a.transpose() # 行变列(类似于矩阵转置)

a.resize((3,2)) # 类似于reshape,但会改变所操作的数组
a

4. 数组的合并(数组的水平合并,垂直合并,深度合并)

数组合并除了下面介绍的水平合并、垂直合并、深度合并外,还有行合并、列合并,以及concatenate()等方式。假如你比我还懒,那就只了解前三种方法吧,足够用了。

a = np.arange(9).reshape(3,3)

b = np.arange(9,18).reshape(3,3)
a
b

np.hstack((a,b)) # 水平合并

np.vstack((a,b)) # 垂直合并

np.dstack((a,b)) # 深度合并

5. 数组的拆分(数组的水平拆分,垂直拆分,深度拆分)

拆分是合并的逆过程,概念是一样的,但稍微有一点不同:

a = np.arange(9).reshape(3,3)

np.hsplit(a, 3) # 水平拆分,返回list

np.vsplit(a, 3) # 垂直拆分,返回list

a = np.arange(27).reshape(3,3,3)

np.dsplit(a, 3) # 深度拆分,返回list

6. 数组运算(与常的四则运算,与数组的四则运算,判断数组是否相等)

数组和常数的四则运算,是数组的每一个元素分别和常数运算;数组和数组的四则运算则是两个数组对应元素的运算(两个数组有相同的shape,否则抛出异常)。

a = np.arange(4, dtype=np.float32).reshape(2,2)

b = np.arange(4, 8, dtype=np.float32).reshape(2,2)

a+2 # 数组和常数可以进行四则运算

a/b # 数组和数组可以进行四则运算

a == b # 最神奇的是,数组可以判断对应元素是否相等

(a == b).all() # 判断数组是否相等

特别提示:如果想对数组内符合特定条件的元素做特殊处理,下面的代码也许有用。

a = np.arange(6).reshape((2,3))
a

(a>2)&(a<=4)

a[(a>2)&(a<=4)]

a[(a>2)&((a<=4))] += 10
a

7. 数组的常用函数(数组所有元素的和、积、平均值、最大值、最小值、元素替换、方差、标准差)

数组对象本身提供了计算算数平均值、求最大最小值等内置方法,numpy也提供了很多实用的函数。为了缩减篇幅,下面的代码仅以一维数组为例,展示了这些方法和函数用法。事实上,大多数情况下这些方法和函数对于多维数组同样有效,只有少数例外,比如compress函数。

a = np.array([3,2,4])

a.sum() # 所有元素的和

a.prod() # 所有元素的乘积

a.mean() # 所有元素的算数平均值

a.max() # 所有元素的最大值

a.min() # 所有元素的最小值

a.clip(3,4) # 小于3的元素替换为3,大于4的元素替换为4

a.compress(a>2) # 返回大于2的元素组成的数组

a.tolist() # 返回python的list

a.var() # 计算方差(元素与均值之差的平方的均值)

a.std() # 计算标准差(方差的算术平方根)

a.ptp() # 返回数组的最大值和最小值之差

a.argmin() # 返回最小值在扁平数组中的索引

a.argmax() # 返回最大值在扁平数组中的索引

np.where(a == 2) # 返回所有值为2的元素的索引

np.diff(a) # 返回相邻元素的差

np.log(a) # 返回对数数组

np.exp(a) # 返回指数数组

np.sqrt(a) # 返回开方数组

np.msort(a) # 数组排序

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

b = np.array([8,5,2])

np.maximum(a, b) # 返回多个数组中对应位置元素的最大值数组

np.minimum(a, b) # 返回多个数组中对应位置元素的最小值数组

np.true_divide(a, b) # 对整数实现真正的数学除法运算

参考

《基于python的数据分析三剑客》

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值