数据分析与可视化之Numpy基础

一、数组的创建

1.使用之前先导入包

import numpy as np

2.创建一维数组

a = np.array([1, 2, 3])
print(type(a))
print(a)

 3.创建多维数组

# 创建多维数组
b = np.array([[1, 2, 3], [4, 5, 6]])
print(b.ndim)  # 数组的秩
print(b.shape)  # 数组的形状
print(b.dtype)  # 数据类型

 4.创建全0数组

# 创建全零数组
c = np.zeros(10)
print(c)

 5.创建全1数组

# 创建全1数组
d = np.ones((2, 5))
print(d)
print(d.dtype)

 6.创建自然数数组

e = np.arange(10)
print(e)

 7.自然数三维数组,可以采用reshape方法改变数组的维度

e = np.arange(24).reshape(2, 3, 4)  # 三维数组
print(e)

 8.从0到10均匀产生100个数字

# 从0到10之间均匀产生100个数字
e = np.linspace(0, 10, 100)
print(e)
# 可用于绘制X,Y轴图像

 二、数据类型与转换

1.改变数组的类型使用dtype

# 改变数组的类型“dtype”
a = np.array([1, 2, 3], dtype=np.float32)
print(a)

numpy 常见的数据类型
int_ int16 int32 int64
uint8:0-255 unit16 32 64
float_ float16 float32 float64
complex 复数类型 
bool_ True Flase

2.bool型数组

# bool型数组
a = np.array([True, False, False, True])
print(a.dtype)
print(a)

 3.字符串类型

# 字符串类型
a = np.array(['sd', 'sde'])
print(a.dtype)  # dtype=<U3,表示字符串长度小于3
print(a)

 4.数据类型的转换

如果是浮点数类型转化成整数类型,直接将小数点后边去掉,而不是四舍五入
# 数据类型的转换
a = np.array([True, False, False, True])  # bool类型转换整形
a = a.astype(np.int16)
print(a)

 三、数组的切片和索引

1.对一维数组进行切片

# numpy 数组的切片
# 对一维数组进行切片
a = np.arange(10)
b = a[5:8]
print(b)

 2.设置步长

# 设置步长,隔两个取一个
b = a[2:8:2]
print(b)

 3.对数组进行切片之后,改变其切片的值会改变原有数组的值

# 数据切片为了方便对大量数据进行处理,所以对切片数据进行改变时原有数据也会发生改变
a = np.arange(10)
print(a)
b = a[5:8]
print(b)
b[0] = 100
print(b)
print(a)

 如果不想改变原有数组的值,可以使用copy方法

# 如果不想原有数据改变,使用.copy方法
a = np.arange(10)
print(a)
b = a[5:8].copy()
print(b)
b[0] = 100
print(b)
print(a)

 4.高维数组切片

# 高维数组切片
a4 = np.arange(24).reshape(2, 3, 4)
print(a4)
print(a4[0])
print(a4[0][1])
print(a4[0][1][2])  # 可以写成[0,1,2]

 用冒号对高维数组进行切片

# 用冒号切片
a5 = a4[:, 0, :3]  # 第一维全都要,第0行,前三列
print(a5)
a5 = a4[:, 0, 2]
print(a5)

 四、布尔索引

# 布尔索引
a = np.arange(20)
a_bool = a > 10
print(a_bool)
a_bool = a[(a > 10) & (a < 15)]  # 取出大于10小于15的数
print(a_bool)
# 满足逻辑运算,取反为~

 五、广播与转置

1.广播

a = np.arange(10).reshape(2, 5)
print(a)
a = a * 10

print(a)

# 两个同类型数组同一位置进行运算
a = a + a
print(a)

# 两个不同类型的数组,分条件按行广播或者按列广播

 2.转置

# 数组的转置
a = np.arange(10).reshape(2, 5)
print(a)
a = a.T
print(a)

 六、数组元素的合并与添加

1.第一种合并方法

# 数组元素的合并与添加
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
c = np.concatenate((a, b))
print(c)

# axis=0为行变换,axis=1为列变换
c = np.concatenate((a, b), axis=1)
print(c)

 第一种方法并不会改变合并后的数组维度

2.第二种合并方法,合并后会增加数组的维度

# 第二种合并方法
a1 = np.array([1, 2, 3, 4])
a2 = np.array([5, 6, 7, 8])
# 组成更高维的数组
a3 = np.stack((a1, a2))
print(a3)

 3.数组元素的添加

# 给数组添加元素
a1 = np.append(a1, 5)
print(a1)

 设置添加元素的方式采用axis参数,0为按行方向,1为按列方向

a2 = np.array([5, 6, 7, 8]).reshape(2, 2)
print(a2)

a2 = np.append(b, [[9], [10]], axis=1)
print(a2)

 4.去重复元素使用unique函数

# 去重元素
a = np.array([1, 2, 1, 1, 2, 3, 1, 4, 5, 6, 1, 4, 6, 3, ])
a = np.unique(a)
print(a)

 七、通用函数和统计方法

1.一元通用函数

# numpy的通用函数和统计方法
a = np.arange(10)
a = np.sqrt(a)  # 对每一个元素开平方
print(a)

 2.二元通用函数

# 二元通用函数
a = np.arange(10)
b = np.arange(10, 0, -1)
c = np.maximum(a, b)
print(c)
# 求均值
middle = np.mean(a)
print(middle)

# 求每一行的均值
a1 = a.reshape(2, 5)
middle = a1.mean(axis=1)  # 沿列的方向
print(middle)
middle = a1.mean(axis=0)  # 沿行的方向
print(middle)

# 求方差
fangcha = np.std(a1, axis=1)
print(fangcha)

# 求中位数,np.median()

八、排序和搜索

1.顶级方法和对象方法都可以使用

# 排序和搜索,默认使用快排
a = np.random.randn(10)
print(a)
a.sort()  # 顶级方法
print(a)
a = np.random.randn(10)
a = np.sort(a)  # 对象方法

 2.返回索引

# 排序后返回索引
a = np.array([2, 4, 1, 3])
b = np.argsort(a)
print(b)
# 返回最大值索引argmax(),以此类推
b = np.where(a > 2)
print(b)  # 找出大于2的索引

 九、生成随机数和保存读取数据

1.乱序

'''
np.random.randn(3,4) 生成正态分布随机数
np.random.randint(1,10,(3,4)) 生成随机自然数,从1到10,三行四列
'''
# 乱序
a = np.array([2, 4, 1, 3])
a = np.random.permutation(a)
print(a)

 2.随机取出值

# choice方法随机取一个值
num = np.random.choice([1, 2, 3, 4, 5, 6], size=1)  # 取一个数
print(num)
num = np.random.choice([1, 2, 3, 4, 5, 6], size=2)  # 取两个数
print(num)
# numpy其实是伪随机数,指定np.random.seed()后生成的随机数相同
'''

 3.文件的保存和加载

'''
对numpy数组的保存,采用np.save方法,格式为npy,采用np.load方法加载文件
也可以采用np.savetxt()和np.loadtxt()方法存储加载txt文件
'''

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九磅十五便士°

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值