欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

DA-005【总第9期】Python数据分析:NumPy的基本语法

程序员文章站 2022-05-25 17:57:33
...

本章对于NumPy的基本用法做简单的介绍:

NumPy是Python自带的高性能科学计算和数据分析的基础包

导入该包:

import numpy as np

创建N维数组对象ndarray:

data=np.array([0.945,-0.246,0.728,0.557,-0.489,0.916])

该对象是一个大数据集,可以作为整体进行运算:

例如:

print(data*10)
print(data+data)
print(data.shape)#一个表示各维大小的元组
print(data.dtype)#表示数据类型,这里是float64

输出如下:

[ 9.45 -2.46 7.28 5.57 -4.89 9.16]

[ 1.89 -0.492 1.456 1.114 -0.978 1.832]

(6,)

float64

创建ndarry的方法:

p00=np.zeros(10)#创建一个全0,长度为10的数组
p01=np.zeros((3,4))#三行四列的全零数组
p1=np.ones(10)#创建一个全1,长度为10的数组
pr=np.arange(15)#创建等差数列数组
pE=np.eye(7)#创建7*7的单位矩阵(identity是同样的用法)
pe=np.empty((3,4))#创建新数组,只分配内存空间但不填充任何值
输出如下:

array([ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]),

array([[ 0., 0., 0., 0.],

[ 0., 0., 0., 0.],

[ 0., 0., 0., 0.]]),

array([ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]),

array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]),

array([[ 1., 0., 0., 0., 0., 0., 0.],

[ 0., 1., 0., 0., 0., 0., 0.],

[ 0., 0., 1., 0., 0., 0., 0.],

[ 0., 0., 0., 1., 0., 0., 0.],

[ 0., 0., 0., 0., 1., 0., 0.],

[ 0., 0., 0., 0., 0., 1., 0.],

[ 0., 0., 0., 0., 0., 0., 1.]]),

array([[ 0., 0., 0., 0.],

[ 0., 0., 0., 0.],

[ 0., 0., 0., 0.]])

创建二维数组:

arr=np.array([[1,2,3],[4,5,6]])#创建二维数组
print(arr*arr)

输出:

[[ 1 4 9] [16 25 36]]

可以看到,二维数组运算是相同的

访问二维数组时,arr[0][2]等效于arr[0,2],同样arr[1]代表[4,5,6]一个整体

对于数据处理:

data1=np.arange(10)
print(data1[4:9])

输出:

[4 5 6 7 8]


数据统一赋值:

data1[4:9]=0
print(data1)

输出:[0 1 2 3 0 0 0 0 0 9]

切片索引:我们不妨把一些常见的语句带进来实验一下,看看能输出什么结果

a=([[1,2,3],[4,5,6],[7,8,9]])
data2=np.array(a)#创建ndarray
print(data2.shape)#输出(3,3)
print(data2[:2])#输出[[1 2 3] [4 5 6]]
“:”表示前面或后面全部覆盖,即选取整个轴,Python从0开始编码,所以这里是选取第0行到第2行(不包含第2行)的所有数据
print(data2[:2,1:])#输出[[2 3] [5 6]],选取开始到第2行(不包含),第1列到最后的所有数据
print(data2[1,:2])#输出[4 5],选取第1行,开始到第2列(不包含)的所有数据
print(data2[2,:1])#输出[7],选取第2行,开始到第一列(不包含)的所有数据
print(data2[:,:1])#输出[[1] [4] [7]],选取所有行,开始到第一列(不包含)的所有数据

布尔型索引:

letter=np.array(['A','B','A','C','B','B','C'])
data=np.random.randn(7,2)#生成随机数
print(data)

DA-005【总第9期】Python数据分析:NumPy的基本语法

print(letter=='B')
print(data[letter=='B'])

输出:

DA-005【总第9期】Python数据分析:NumPy的基本语法

此操作可以实现字符与布尔数组的匹配

(使用布尔数组选取多个应用“|”和“&”,“and”和‘or’在布尔型数组中无效)

统一筛选与赋值:

data[data<0]=0
print(data)

DA-005【总第9期】Python数据分析:NumPy的基本语法

data[letter!='B']=-1
print(data)

DA-005【总第9期】Python数据分析:NumPy的基本语法

其他常用操作:

data3=np.dot(data2.T,data2)#计算矩阵内积

DA-005【总第9期】Python数据分析:NumPy的基本语法

data4=np.arange(16).reshape((2,2,4))#生成一个三维数组

这个数组长这样:

DA-005【总第9期】Python数据分析:NumPy的基本语法


相关标签: DA