机械学习基础(0)数据科学包 numpy

numpy

什么是numpy?

NumPy 是一个运行速度非常快的数学库,主要用于数组计算,包含:

一个强大的N维数组对象 ndarray
广播功能函数
整合 C/C++/Fortran 代码的工具
线性代数、傅里叶变换、随机数生成等功能

numpy中重要的一个功能为处理n维的数组对象。其中Ndarry是一种同类型数据的集合,以0下标为开始进行元素的索引。

Numpy中的数据类型
名称描述
bool_布尔型数据类型(True 或者 False)
int_默认的整数类型(类似于 C 语言中的 long,int32 或 int64)
intc与 C 的 int 类型一样,一般是 int32 或 int 64
intp用于索引的整数类型(类似于 C 的 ssize_t,一般情况下仍然是 int32 或 int64)
int8字节(-128 to 127)
int16整数(-32768 to 32767)
int32整数(-2147483648 to 2147483647)
int64整数(-9223372036854775808 to 9223372036854775807)
uint8无符号整数(0 to 255)
uint16无符号整数(0 to 65535)
uint32无符号整数(0 to 4294967295)
uint64无符号整数(0 to 18446744073709551615)
float_float64 类型的简写
float16半精度浮点数,包括:1 个符号位,5 个指数位,10 个尾数位
float32单精度浮点数,包括:1 个符号位,8 个指数位,23 个尾数位
float64双精度浮点数,包括:1 个符号位,11 个指数位,52 个尾数位
complex_complex128 类型的简写,即 128 位复数
complex64复数,表示双 32 位浮点数(实数部分和虚数部分)
complex128复数,表示双 64 位浮点数(实数部分和虚数部分)

对于我们不希望使用基本数据类型进行计算的时候,numpy为我们提供了自定义数据结构的方式dtype
通过以下的方式创建出结构体:

numpy.dtype(object, align, copy)
  • object - 要转换为的数据类型对象
  • align - 如果为 true,填充字段使其类似 C 的结构体。
  • copy - 复制dtype 对象 ,如果为 false,则是对内置数据类型对象的引用
import numpy as np

#定义dtype1
dt = np.dtype([('age',np.int8)]) 


#定义dtype2
dt = np.dtype([('age',np.int8)]) 
a = np.array([(10,),(20,),(30,)], dtype = dt) 
print(a['age'])
 ===>  [10 20 30]
 
#定义dtype3
student = np.dtype([('name','S20'), ('age', 'i1'), ('marks', 'f4')]) 
print(student)
 ===> [('name', 'S20'), ('age', 'i1'), ('marks', 'f4')]
 
#定义dtype4
student = np.dtype([('name','S20'), ('age', 'i1'), ('marks', 'f4')]) 
a = np.array([('abc', 21, 50),('xyz', 18, 75)], dtype = student) 
print(a) 
===> [('abc', 21, 50.0), ('xyz', 18, 75.0)]
NumPy数组属性

NumPy中有一些基础的属性来描述所建立矩阵的属性

属性说明
ndarray.ndim秩,即轴的数量或维度的数量
ndarray.shape数组的维度,对于矩阵,n 行 m 列打印出的结果为(n,m)
ndarray.size数组元素的总个数,相当于 .shape 中 n*m 的值
ndarray.dtypendarray 对象的元素类型
ndarray.itemsizendarray 对象中每个元素的大小,以字节为单位
ndarray.flagsndarray 对象的内存信息
ndarray.realndarray元素的实部
ndarray.imagndarray 元素的虚部
ndarray.data包含实际数组元素的缓冲区,由于一般通过数组的索引获取元素,所以通常不需要使用这个属性。
numpy 创建矩阵

调用numpy的array方法进行矩阵的创建

import numpy as np

# 创建16位int的矩阵2行,3列,4面的矩阵。
a = np.array([2, 3, 4], dtype=np.int)

# 创建元素为0的3*2大小的矩阵
b = np.zeros([2, 3], dtype=np.int)

# 创建元素为1矩阵
c = np.ones((1, 1, 1, 1, 2), dtype=np.int)

# 创建从start到stop的范围数组
d = np.arange(start, stop, step, dtype)

# 创建一个一维等差数列数组
e = np.linespace(start, stop, step, dtype)

# 创建一个等比数列 num表示默认的样本数目 endpoint
f = np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)

Numpy中的切片与索引

ndarray对象的内容可以通过索引或者切片来访问和修改,与Python中的List切片一样。

  • 数组可以通过ndarray可以基于0-n的下标进行索引。
  • 切片可以通过内置的slice函数,设置start,stop,step参数进行,从原有数组中切割出一个新数组。

分割:将矩阵进行分割

# 等向分割 A为矩阵,2为分割的个数,axis为沿着哪个轴进行分割
np.split(A,2,axis=1)

# 非等向分割 A为矩阵,2为分割的个数,axis为沿着哪个轴进行分割
np.array_split(A,2,axis=1)

# 横向分割 A为矩阵,2为分割的个数,axis为沿着哪个轴进行分割
np.vsplit(A,2)

# 纵向分割 A为矩阵,2为分割的个数,axis为沿着哪个轴进行分割
np.hsplit(A,2)
array的运算
矩阵(元素内)计算表达式
相加a+b
相减a-b
次方a**2
判断a>3,a<3,a ==3
元素逐个相乘a*b
元素逐个相加得到值a.sum
求出矩阵的最大值a.max
计算最小值的索引np.argmin(a)
计算最大值的索引np.argmax(a)
计算参数平均值np.mean(a)
计算累加(输出一个数列)np.cumsum(a)
计算累差(输出一个数列)np.diff(a)
矩阵之间运算表达式
矩阵相乘a.dot(b) 或者 numpy.dot(a,b)
矩阵排序(逐行排序)a.sort() 或者 np.sort()
限高限低(替换)np.clip(A,5,9)
矩阵竖直合并vstack((A,B))
矩阵左右合并hstack((A,B))
矩阵的复制a.copy()
函数描述
reshape不改变数据的条件下修改形状
flat数组元素迭代器
flatten返回一份数组拷贝,对拷贝所做的修改不会影响原始数组
ravel返回展开数组
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值