Python 用做数据分析非常强大,但是在性能上或者方便程度上还不够,所以各种第三方数据分析模块和库就应运而生。本文介绍 Numpy 第三方库,使用 Numpy 的原因,性能强大、开源、数组运算、读写迅速。
更多Python相关文章点击:Python学习日志目录
Numpy 模块
Numpy 模块是一个比较底层的数据分析模块,具有高性能、开源、数组运算、读取迅速等优势。
安装
pip install numpy -i https://pypi.douban.com/simple
引入,一般我们引入的时候会给这个模块起一个别名 np
import numpy as np
创建 Numpy 数组:
np.array([])
data = np.array([1,2,3,4,5,6])
创建二维数组
data_2d = np.array([[1,2,3],[3,4,5]])
为了看起来好看,也可以用下面这张写法
data_2d = np.array( [ [1,2,3], [3,4,5] ] )
判断数组是几维数组
data.ndim
data = np.array([[1,2,3],[3,4,5]]) print(data.ndim)
运行结果:2
判断数组几维和各维度长度
data.shape
data = np.array([[1,2,3],[3,4,5]]) print(data.shape)
运行结果:(2, 3)
创建一个全是0的数组,常用来初始化数组
np.zeros()
data = np.zeros(10) print(data)
运行结果:[0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
创建全是1的数组
np.ones()
data = np.ones((3,4)) print(data)
运行结果:
[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]
数组索引,跟Python列表是一样的,详细可以参考列表索引的例子
data[n],第n个索引位的数据
data = np.arange(10) print(data) print(data[5])
运行结果:
[0 1 2 3 4 5 6 7 8 9]
5
二维数组索引方法
data[x,y] / data[x][y],第x个数组第y个索引位置的数据
data = np.array([[1,2,3], [4,5,6]]) print(data[0][1]) print(data[1,1])
运行结果:
2
5
数组切片,获取数组中某几个数据
data[start,end],从start开始到end之前的数据(包含start位,不包含end位)。
data = np.arange(10) print(data) print(data[3:5]) print(data[:3]) print(data[5:]) print(data[::-1])
运行结果:
[0 1 2 3 4 5 6 7 8 9]
[3 4]
[0 1 2]
[5 6 7 8 9]
[9 8 7 6 5 4 3 2 1 0]
注意,切片得到的数据是数组的原始数据,对切片数据进行修改,原始数据会被修改。
data = np.arange(10) print(data) data_slice = data[3:5] # 把数组切片赋值给一个变量 data_slice[0] = 100 # 修改这个变量里的值 print(data) # 原始数据改变了
运行结果:
[0 1 2 3 4 5 6 7 8 9]
[ 0 1 2 100 4 5 6 7 8 9]
如果想要修改得到的切片,并且对原始数据没有改变,用到.copy()函数
data = np.arange(10) print(data) data_slice = data[3:5].copy() # 把数组切片复制一份,赋值给一个变量 data_slice[0] = 100 # 修改这个变量里的值 print(data_slice) print(data) # 原始数据没变
运行结果:
[0 1 2 3 4 5 6 7 8 9]
[100 4]
[0 1 2 3 4 5 6 7 8 9]
变换数组的维度
data = np.arange(10) print(data) print(data.reshape((2,5))) # 把一维数组变成二维数组,2个数组,每个数组5个数据 print(data.reshape((2,5)).T) # 加上.T,对数组进行转置,就是行变成列,列变成行。
运行结果:
[0 1 2 3 4 5 6 7 8 9]
[[0 1 2 3 4]
[5 6 7 8 9]]
[[0 5]
[1 6]
[2 7]
[3 8]
[4 9]]
注意,如果不能完整切分原来数组,则会报错。
Numpy有一些内置的运算
对数组内的数据进行运算的方法:
abs 计算绝对值 sqrt 计算平方根 square 计算平方 exp 计算指数e^x sign 计算正负号:1、0、-1 ceil 计算大于等于该数据的最小整数 floor 计算小于等于该数据的最大整数 isnan 计算哪些数据是非数字
使用方法:
data = np.arange(10) print(data) data_new = np.sqrt(data) # 把数组每个数据求平方根 print(data_new)
运行结果:
[0 1 2 3 4 5 6 7 8 9]
[0. 1. 1.41421356 1.73205081 2. 2.23606798
2.44948974 2.64575131 2.82842712 3. ]
数组跟数组进行运算
data1 = np.array([1,3,5,7,9]) data2 = np.array([2,4,6,8,10]) print(data1 + data2) # 把数组对应索引位的数据进行相加 print(np.add(data1,data2))
运行结果:
[ 3 7 11 15 19]
[ 3 7 11 15 19]
数组可用运算
add 计算两个数组对应数据的和 subtract 从第一个数组减去第二个数组对应数据 multiply 计算两个数组对应数据的乘积 divide 第一个数组对应数据除以第二个数组对应数据 power 第一个数组数据A,第二个数组数据B,计算A的B次方 fmax 两个数组对应数据里大的数据 fmin 两个数组怼赢数据里小的数据
数组统计运算
.sum() 将数组内所有数据的和
data = np.arange(10) print(data.sum())
运行结果:
45
可用的数组统计运算方法
.sum() 数组内数据的和 .mean() 数组内数据的平均值 .std() 数组内数据的标准差 .min() / .max() 数组内数据的最小值和最大值 .arcmin() / .arcmax() 数组内数据最小值和最大值的索引位置
数组的排序
.sort() 对数组内的数据,按照大小进行排序
data = np.array([1,9,3,6,4]) data.sort() print(data)
运行结果:
[1 3 4 6 9]
数组读取文档中的数据
data = np.genfromtxt('data.txt',delimiter=',') # 读取 data.txt 文档中的数据,后面参数是数据用什么分割(例子中是用,分割)。 print(data) # 输出的是浮点数 # 可以用.astype(int)转为整数 data_int = data.astype(int) print(data_int)
运行结果:
[1. 2. 3. 4. 5. 6.]
[1 2 3 4 5 6]
下一篇:Python 数据分析模块 Pandas 之 Series 数据
上一篇:安装 Scrapy 以及出现 Twisted 安装错误的解决方法
- 相关文章 -
Python 基础知识入门演示 - 2017-12-31
Python 数字与数字型运算 - 2020-09-08
Python 基础知识之数据类型 - 2020-09-07
Python 学习中非常好用的编辑器 Sublime Text 3 - 2020-09-07
Python 基础知识之变量 - 2020-09-03
Python 详细安装步骤图解 - 2020-09-01
Python 数据分析模块 Pandas 之 DataFrame 数据 - 2020-02-09
Python 数据分析模块 Pandas 之 Series 数据 - 2020-02-05
- 文章评论 -
- 最新评论[0条评论] -
版权所有©逍遥峡谷 - 星际中心超自然局 · 地球总部 |
逍遥峡谷 ·
酷品优选
Copyright©Interstellar Central Occult Agency (I.C.O.A)
本局纯属虚构,如有雷同,纯属巧合