数据分析与展示Numpy库复习

表示、清洗、统计和展示数据

参考:
MOOC Python数据分析与展示

numpy中文官网

Numpy库入门

NumPy是一个开源的Python科学计算基础库,包含:
• 一个强大的N维数组对象 ndarray
• 广播功能函数
• 整合C/C++/Fortran代码的工具
• 线性代数、傅里叶变换、随机数生成等功能

NumPy是SciPy、 Pandas等数据处理或科学计算库的基础

与list区别

  • list每个元素可以是不同的类型,numpy每个元素类型一样
  • numpy比list速度快非常多,%timeit

NumPy的数组对象:ndarray

创建方法:

1.从Python中的列表、元组等类型创建
在这里插入图片描述
在这里插入图片描述

2.从Numpy函数创建数组,如:arange,ones,zeros
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

a = np.linspace(1,10,4)
#array([1.,4.,7.,10]) endpoint默认true

3.字节流
4.文件中读取特定格式

ndarray数组变换

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
use the numpy.copy function to separate the arrays memory-wise.

转换数据类型
new_a = a.astype(new_type)
astype会创建新的数组

a = np.ones((2,3,4),dtype=np.int)
b = a.astype(np.float)

转换成列表,失去部分排列规则
ls=a.tolist()

ndarray数组操作

索引(获取特定位置元素)+切片(获取数组元素子集)

切片:
一维:a[1:4:2] 起始编号:终止编号(不含):步长
多维:a[:,:,::2]使用步长跳跃切片
在这里插入图片描述
从数组中返回所需的索引,无论其尺寸如何,numpy.where()
在这里插入图片描述
要删除特定的索引,可以使用numpy.delete()
在这里插入图片描述

ndarray数组运算

数组与标量的运算作用于数组每个元素
一元函数:np.abs(x),np.sqrt(x),np.square(x),np.ceil(x)
二元函数:

+ - * / ** np.fmax() np.fmin()

np.fmin() 比较两个数组并返回一个包含元素最小值的新数组

np.fmin([2, 3, 4], [1, 5, 2])
#array([1, 3, 2])

python已有列表类型,为什么需要一个数组对象(类型)?

  • 省略每个元素运算所需循环,使得一维向量像单个数据
  • 优化后提升这类运算速度
import numpy as np
a  = np.array([0,1,2,3,4])
b = np.array([0,1,2,3,4])
c = a**2 + b**3
import numpy as np
a  = [0,1,2,3,4]
b = [0,1,2,3,4]
c = []
for i in range(len(a)):
	c.append(a[i]**2+b[i]**3)

ndarray是一个多维数组对象,由实际数据和描述数据的元数据(数据维度、数据类型)构成

一般要求所有元素类型相同(同质),数组下标从0开始

在这里插入图片描述

ndarray对象属性

属性.ndim

Numpy库数据存取

普通文本文件读入和写入

读取

f = open('somefile.txt', 'r')
alist = f.readlines()
f.close()

写入


f = open('newtextfile.txt', 'w')
f.writelines(newdata)
f.close()
数组存储

当数据量非常大时,且类型一致,使用如下方式更快速

np.savetxt(frame, array, fmt=‘%.18e’, delimiter=None)
frame:文件、字符串或产生器
fmt:格式,如%d,%.2f

np.loadtxt(frame, dtype=np.float, delimiter=None, unpack=False)
dtype:类型默认float
unpack:如果为True,读入属性将分别写入不同变量

存为二进制文件使用 numpy.savez

任意维度存取

a.tofile(frame, sep=‘’, format=‘%s’)
sep : 数据分割字符串,如果是空串,写入文件为二进制

np.fromfile(**frame, dtype=float, count=‐1, sep=‘’)
• count : 读入元素个数, ‐1表示读入整个文件

便捷文件存取

np.save(fname, array) / np.savez(fname, array)
np.load(fname)

随机函数库

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

numpy统计函数

在这里插入图片描述
在这里插入图片描述
梯度函数:np.gradient(f)
梯度:连续值之间的变化率

注意

矩阵只能是二维的

在这里插入图片描述

广播功能

NumPy 广播(broadcasting)指的是对不同形状的数组进行算术运算的能力。更准确地说,它是一组规则,用于处理在算术运算过程中不同形状的数组,以便它们可以执行相应的操作。

import numpy as np

a = np.array([1., 2., 3.])
b = np.array([4., 5., 6.])

# 对两个数组进行加法运算,此时广播机制会自动生效
c = a + b

print(c)
#array([5., 7., 9.])

类似:

import numpy as np

# 创建一个形状为 (2, 3) 的二维数组 a
a = np.array([[1, 2, 3], [4, 5, 6]])

# 创建一个形状为 (3,) 的一维数组 b
b = np.array([1, 2, 3])

# 对两个数组进行加法运算,此时广播机制会自动生效
c = a + b

print(c)
#array([[2, 4, 6],
#       [5, 7, 9]])

在这里插入图片描述

应用

机器学习评价函数可能会用到

概率大于0.5赋值为一

np_data = np.array([0.1,0.3,0.7,0.4,0.9])
np.where(np_data> 0.5, 1, 0)
#array([0, 0, 1, 0, 1])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值