python数据分析之Numpy库

本文介绍了NumPy库在Python中的重要性,包括如何导入、创建数组(如从列表、全零/全一数组、指定元素类型),以及进行数学运算、数组属性、索引与切片、类型转换、数组操作(如排序、统计函数)和内置函数等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Numpy介绍

NumPy是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多。

1、导入

import numpy as np

2、创建数组

import numpy as np
# 第一种:从列表传入
a=np.array([1,2,3,4,5])  # 一维
a=np.array([[0,1,2],[9,8,7]])  # 二维,列表里面的元素是列表类型

# 第二种:从列表创建
lst=[1,2,3,4,5]
a=np.array(lst)  # 一维
a=np.array(lst,lst)  #二维
生成全n的数组
import numpy as np
# 生成全0数组
a=np.zeros(7)  # 括号内传个数,默认浮点数类型

# 生成全1数组
a=np.ones(6)

# dtype指定元素类型
a=np.ones(7,dtype='bool')

# fill将数组设为指定值
arr=np.array([1,2,3,4])
a.fill(7)  # 让数组的每个元素都等于7

'''
数组中要求所有元素的 dtype 是一样的
如果传入参数的类型与数组类型不一样,需要按照已有的类型进行转换。
'''
a.fill(2.5)  # [2, 2, 2, 2]
a = a.astype("float")  # 强制类型转换
a.fill(2.5)  # [2.5, 2.5, 2.5, 2.5]
arange序列、linspace等差数列
import numpy as np
# 生成整数序列
arr=np.arange(1,10,2)  # 左闭右开,与range用法相同

# 生成等差数列
arr=np.linspace(1,10,21)  # 包含区间右边值,从1到10取21个数组成等差数列
random随机数序列

一维

import numpy as np
# 生成包含10个,0到1之间的随机浮点数的数组
a=np.random.rand(10)

# 生成包含10个,在-1.96到1.96之间符合标准正态分布的数组
a=np.random.randn(10)

# 生成包含10个,1到20之间的随机整数的数组
a=np.random.randint(1,20,10)

二维

import numpy as np
a=np.random.rand(3,2)  # 3行2列

a=np.random.randn(3,2)  # 3行2列

a=np.random.randint(1,20,(3,2))  # 3行2列

3、numpy数学操作

import numpy as np
a=np.array([7,2,5,0])
print(a+1)  # 逐个元素加1  [8 3 6 1]

b=np.array([6,5,4,3])
print(a+b)  # 对应位置元素相加  [13  7  9  3]

4、数组的属性

import numpy as np
a=np.array([1,2,3,4])
# 查看类型
type(a)

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

# 查看形状
a.shape

# 查看数组里面元素的个数
a.size

# 查看数组的维度
a.ndim

5、索引和切片

一维数组
import numpy as np
a=np.array([1,2,3,4])
# 索引,取第一个元素
a[0]

# 修改第一个元素
a[0]=10

# 切片
a[1:3]  # 左闭右开
a[-2:]
a[::2]  # 步长为2
多维数组
import numpy as np
np.array([[1,2,3,1,5],[4,5,6,4,6],[7,8,9,7,0]])
# 索引
a[1,2]  # 第2行第3列
# 取整行
a[1]  # 第2行的所有元素
# 取整列
a[:,1]  # 第2列的索引元素

#切片
a[0,1:4]  # 第1行,第2列到第4列
a[1::2,::2]  # 第2行到最后步长为2,所有列步长为2
花式索引

花式索引实现任意位置的操作

一维花式索引
import numpy as np
a=np.arange(0,100,10)
index=[1,2,-3]  # 指定索引位置
y=a[index]

# 使用布尔数组实现花式索引
mask=np.array([0,2,2,0,0,1,0,0,1,0],dtype=bool)
y=a[mask]
二维花式索引
# 给定行和列
a = np.array([[0,1,2,3,4,5],[10,11,12,13,14,15],[20,21,22,23,24,25],[30,31,32,33,34,35],[40,41,42,43,44,45],[50,51,52,53,54,55]])

a[(0,1,2,3,4),(1,2,3,4,5)]  # 返回一条次对角线上的5个值
a[-3:,[0,2,4]]  # 返回最后3行的1,3,5列

# 使用布尔数组实现花式索引
mask = np.array([1,0,1,0,0,1],dtype = bool)
a[mask,2]  # 返回1,3,6行,的第3列
‘不完全’索引
import numpy as np
a = np.array([[0,1,2,3,4,5],[10,11,12,13,14,15],[20,21,22,23,24,25],[30,31,32,33,34,35],[40,41,42,43,44,45],[50,51,52,53,54,55]])
# 给定行索引,返回多行
a[:3]  # 前3行

con = np.array([0,1,1,0,1,0],dtype = bool)  # 使用花式索引取出第2,3,5行
a[con]

6、where语句

where(array) 返回所有非零元素的索引

一维数组
import numpy as np
a=np.array([0,12,5,20])
# 判断数组中的元素是不是大于10
a>10

# 返回数组中所有大于10的元素的索引位置
np.where(a>10)

# 取出大于10的元素
a[a>10]
# 等价于
a[np.where(a>10)]

7、类型转换

import numpy as np
a=np.array([1.5,-3],dtype=float)
asarray函数
a=np.array([1,2,3])
np.asarray(a.dtype=float)
astype方法

返回一个新数组

a=np.array([1,2,3])
a.astype(float)

8、数组操作

一维数组
import numpy as np
a=np.array([7,3,6,2,5,3,4])
数组排序

sort函数

np.sort(a)  # 非原地排序

argsort函数
argsort返回从小到大的排列在数组中的索引位置

order=np.argsort(a)
a[order[0]]
a[order[-1]]
数学操作

求和

np.sum(a)
# 或
a.sum()

最大值

np.max(a)
# 或
a.max()

最小值

np.min(a)
# 或
a.min()

均值

np.mean(a)
# 或
a.mean()

标准差

np.std(a)
# 或
a.std()

相关系数矩阵

b=np.array([1,2,3,4,5,6,7])
np.cov(a,b)
多维数组

数组形状

# shape
a=np.arange(6)
a.shape=(2,3)  # 2行3列

# reshape返回新数组
a=np.arange(6)
a.reshape(2,3)  # 2行3列

转置

a=np.array([[0, 1, 2],
       [3, 4, 5]])
a.T  # 转置

a.transpose()  # 只要没赋值给本身,a的数值不会变换

数组连接concatenate函数

x = np.array([[0,1,2],[10,11,12]])
y = np.array([[50,51,52],[60,61,62]])
# 增加行
z = np.concatenate((x,y))  # 默认沿着第一维进行连接 等价于  np.vstack((x,y))
# 增加列
z = np.concatenate((x,y),axis = 1)  # 沿着第二维进行连接 等价于 np.hstack((x,y))
z = np.array((x,y))  # 连接成三维的数组 等价于 np.dstack((x,y))

9、Numpy内置函数

a=np.array([-1,2,3,-2])
np.abs(a)  # 绝对值
np.exp(a)  # e的a次方
np.median(a)  # 中值
np.cumsum(a)  # 累积和

内置函数文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值