- 什么是numpy
- numpy基础
- numpy常用方法
- numpy常用统计方法
-
什么是numpy
一个在Python中做科学计算的基础库,重在数值计算,也是大部分PYTHON科学计算库的基础库,多用于在大型、多维数组上执行数值运算
- 快速
- 方便
- 科学计算的基础库
-
numpy基础
(1)多维数组创建
import numpy as np
a= np.array([1,2,3,4,5,6],type=np.int64)
b= np.array(range(1,6))
c= np.arange(1,6,1)
print(a)
print(b)
print(c)
结果:
1 2 3 4 5 6]
[1 2 3 4 5]
[1 2 3 4 5]
np.array(list) 将一个列表或序列转化为数组
np.adarray(a,b,c) 序列表达式直接产生一个数组 从a到b,步长为c。
np特有的,猜测是 b= np.array(range(a,b,c)的简写
PS:
创建多维数组时可以
(2)矩阵数据类型
#查看多维数组的数据类型
a.dtype
#调整数据类型
a.astype("int8")
#特别的,修改小数的位数
np.round(a,2) #保留两位小数 python中也是如:round(random.random(),2) 随机产生一个0-1之间的小数,保留两位
PS:
type(a)
结果:
numpy.ndarray
type(a) numpy中多维数组的对象类型是 numpy.ndarray 即numpy多维数组
a.dtype 数据的数据类型
(3)多维数组形状
d = np.array([[1,2,3,4,5],[6,7,8,9,10]])
e = np.array([ [[1,2,3,4,5],[6,7,8,9,10]],[[1,2,3,4,5],[6,7,8,9,10]] ])
#查看多维数组形状
print(a.shape)
print(d.shape)
print(e.shape)
#改变多维数组形状
d.reshape(5,2)
结果:
(6,) 一维数组的shape 一个数
(2, 5) 二维数组的shape 二个数
(2, 2, 5) 三维数组的shape 三个数,2 块 2行3列的
0轴(维)是2, 1轴(维)是2, 2轴(维)是5
注意:
d.reshape reshape操作是有返回值的,需要有一个对象去接收改变后的多维数组。一般有返回值的操作都不改变原对象d。
PS:多维数组的轴(维度)
在numpy中轴(axis)可以理解为方向,使用0,1,2...数字表示,
对于一个一维数组,只有一个0轴, 对于2维数组(shape(2,2)),有0轴和1轴, 对于三维数组(shape(2,2, 3)),有0,1,2轴
二维数组 0轴横轴,1轴是纵轴
shape=(2, 2, 5), 即:0轴=2; 1轴=2; 2轴=5 ;即2块,2行,2列的多维数组
(4)多维数组计算
数组与数字: 如 a+1,a-1,a*3,a/2, "广播" - 将标量"广播"运算到到各个元素
数组与数组(同形状):对应位置运算
数组与数组(不同形状):只要在某一维度,如行或列相同,就在该维度计算,否则不能计算
numpy 转置:
a 是二维数组
a.transpose()
a.swapaxes(1.0) # 交换轴,也能实现转置
a.T
以上三种方法都能实现转置
-
numpy常用方法
(1)numpy读取本地数据 np.loadtxt
np.loadtxt(fname,dtype=np.float,delimiter=None,skiprows=0,usecols=None,unpack=False)
fname:文件路径
dtype:读取成什么数据类型
delimiter:以什么作为分割
skiprows:跳过前几行,一般是跳过表头
usecols :使用哪几列
unpack:转置
import numpy as np
us_file_path="C:\\Users\\Administrator\\Desktop\\数据分析\\数据分析资料\\day03\\code\\youtube_video_data\\US_video_data_numbers.txt"
t_us = np.loadtxt(us_file_path ,delimiter=",",dtype="int")
print(t_us)
结果:
[[4394029 320053 5931 46245]
[7860119 185853 26679 0]
[5845909 576597 39774 170708]
...
[ 142463 4231 148 279]
[2162240 41032 1384 4737]
[ 515000 34727 195 4722]]
numpy索引和切片
f = np.array([[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15]])
print(f)
# 取行
print(f[2]) # 单行 或 print(f[2,:])
print(f[1:2]) # 连续多行 或 print(f[1:2,:])
print(f[[0,2],:]) # 不连续多行 或 f[[0,2]]
# 取列
print(f[:,2]) # 单列
print(f[:,1:]) # 连续多列
print(f[:,[1,2]]) # 不连续多列
# 取多个不相邻的点
print([[0,2,2],[0,2,4]]) #取[0,0],[2,2],[2,4]三点
PS :
索引从0开始
1:3 取不到3,取2,3两列
取不连续多值用[],[[1,3],:] 取2,4两行