美文网首页Numpy
数据分析之NumPy

数据分析之NumPy

作者: Fizz翊 | 来源:发表于2018-12-09 16:13 被阅读4次

NumPy

数组

NumPy的基本对象是同类型的多维数组

a = np.arange(20)

通过这个可以生成一个一维数组a,从0开始,步长为1,长度为20。

我们可以通过函数reshape重新构造这个数组,例如构造为一个4*5的二维数组,reshape的参数代表各个维度的大小,且按各维顺序排列。

a = a.reshape(4,5)

#结果为
 [[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]
 [15 16 17 18 19]]

array同时还有一些函数可以查看相关属性。

  • ndim 查看维度
  • shape 查看各维度大小
  • size 查看全部元素个位
  • dtype 查看元素类型

创建数组

数组的创建可以通过转换列表实现,高维数组可通过转换嵌套列表来实现。

raw = [0,1,2,3,4]
a = np.array(raw)
#####
raw = [[0,1,2,3,4],[5,6,7,8,9]]
b = np.array(raw)

一些特殊的数组有特别定制的命令生成,如4*5的全零矩阵。

d = (4,5)
np.zeros(d)
##结果为:
array([[ 0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.]])

但是默认生成的类型是浮点型,可以通过指定类型改为整型

d = (4,5)
np.ones(d,dtype=int)

[0,1)区间的随机数数组

np.random.rand(5)

数组操作

数组中简单的四则运算已经重载过了,都是基于数组元素的。

+=,-=,*=,、-= 操作符在NumPy中同样支持。

  • 全部元素的和: a.sum()

  • 数组的最大值和最小值:a.max()/a.min()

  • 每一行的最大值:a.max(asis=1)

  • 每一列的最小值:a.ming(axis=0)

科学计算中大量使用到矩阵计算,NumPy同时提供了矩阵对象(matrix)

矩阵和数组的差别为:

  • 矩阵是二维的,而数组的可以是任意正整数维度
  • 矩阵的操作符进行的是矩阵乘法,乘号左侧的矩阵列和乘号右边的矩阵行要相等,而在数组中操作符进行的是每一个元素的对象相乘,乘号两侧的数组每一维大小需要一致。

数组可以通过asmatrix或者mat转换为矩阵,或者直接生成。

a = np.arange(20).reshape(4,5)
a = np.asmatrix(a)

b = np.matrix('1.0,2.0,3.0,4.0')

数组元素的访问

数组和矩阵元素的访问可以通过下标进行

a = np.array([3.2,1.5],[2.5,4])
print(a[0][1])
print(a[0,1])

可以通过下标访问来修改数组元素的值

a[0][1] = 2.0

利用:可以访问到某一维的全部数据

a:
[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]
 [15 16 17 18 19]]

例如取出矩阵中的第2和4列

print(a[:,[1,3]])

将第一列大于5的元素(10,15)对应的第三列元素(12,17)取出来

a[:,2][a[;,0] > 5]

可以使用where函数查看特定值在数组中的位置

loc = np.where(a==11)
print(loc)
(array[2],array[1])

数组操作

矩阵转置

a = np.random.rand(2,4)
print "a:"
print a
a = np.transpose(a)
print "a is an array, by using transpose(a):"
print a
b = np.random.rand(2,4)
b = np.mat(b)
print "b:"
print b
print "b is a matrix, by using b.T:"
print b.T

a:
[[ 0.17571282  0.98510461  0.94864387  0.50078988]
 [ 0.09457965  0.70251658  0.07134875  0.43780173]]
a is an array, by using transpose(a):
[[ 0.17571282  0.09457965]
 [ 0.98510461  0.70251658]
 [ 0.94864387  0.07134875]
 [ 0.50078988  0.43780173]]
b:
[[ 0.09653644  0.46123468  0.50117363  0.69752578]
 [ 0.60756723  0.44492537  0.05946373  0.4858369 ]]
b is a matrix, by using b.T:
[[ 0.09653644  0.60756723]
 [ 0.46123468  0.44492537]
 [ 0.50117363  0.05946373]
 [ 0.69752578  0.4858369 ]]

矩阵求逆

import numpy.linalg as nlg
a = np.random.rand(2,2)
a = np.mat(a)
print "a:"
print a
ia = nlg.inv(a)
print "inverse of a:"
print ia
print "a * inv(a)"
print a * ia

a:
[[ 0.86211266  0.6885563 ]
 [ 0.28798536  0.70810425]]
inverse of a:
[[ 1.71798445 -1.6705577 ]
 [-0.69870271  2.09163573]]
a * inv(a)
[[ 1.  0.]
 [ 0.  1.]]

按列拼接两个向量组成一个矩阵

a = np.array((1,2,3))
b = np.array((2,3,4))
print np.column_stack((a,b))

[[1 2]
 [2 3]
 [3 4]]

缺失值

缺失值在分析中也是信息的一种,NumPy提供nan作为缺失值的记录,通过isnan判定

a = np.random.rand(2,2)
a[0,1] = np.nan
print(np.isnan(a))

[[False  True]
 [False False]]

相关文章

  • Python 数据分析学习笔记: numpy 篇

    Python 数据分析学习笔记:numpy篇 前言 数据分析的主要库是 pandas,而 numpy 是 pand...

  • 优达学城--机器学习入门

    第4部分:数据分析基础 4.4 使用numpy和pandas分析数据 += 与 +的区别: 4.4 使用numpy...

  • 97、NumPy基础

    NumPy是高性能科学计算和数据分析的基础包 NumPy在数据分析中常用的功能: 1、用于数据整理和清理、...

  • Python科学计算相关

    科学计算NumPy & SciPy: http://www.numpy.org/ 数据分析Pandas:http:...

  • 数据分析之numpy

    ndarray概述 创建n维数组 接收的是列表类型,所有元素类型必须相同shape表示各维度大小的元组 dt...

  • 数据分析之NumPy

    NumPy 数组 NumPy的基本对象是同类型的多维数组 通过这个可以生成一个一维数组a,从0开始,步长为1,长度...

  • day77-数据分析之numpy

    numpy是数据分析中最基础的分析库,而numpy中最重要的部分是np.array 1numpy库 1.1利用数组...

  • Python实现数据分析1

    Python-数据分析常用库 1)Numpy 2) Pandas 3) Matplotlib Numpy 基于数组...

  • 数据挖掘 numpy,pandas库详解

    python依靠numpy和pandas成为数据挖掘的首选语言,就连c++也排名其后,numpy分析数据,pand...

  • python计算生态概览

    从数据处理到人工智能 Python库之数据分析 1.Numpy: 表达N维数组的最基础库 -Python接口...

网友评论

    本文标题:数据分析之NumPy

    本文链接:https://www.haomeiwen.com/subject/bmckhqtx.html