赞
踩
目录
2.2.6 np.zeros_like() 和**数组的shape一样,全零的数组
2.2.7 np.ones_like() 和**数组的shape一样,全一的数组
2.2.8 np.full() 返回给定形状和类型的新数组,填充fill_value
2.2.9 np.identity(),np.eye() 单位矩阵形成的数组
5.9 np.vstack() 垂直堆叠数组,和np.concatenate((...),axis=0)一样
5.10 np.hstack() 水平堆叠数组,和np.concatenate((...),axis=1)一样
5.12 np.vsplit(),和np.split(axis = 0)一样
5.13 np.hsplit(),和np.split(axis = 1)一样
numpy是Python语言的一个扩展包 ,是 “ Numeric Python”的简称,它是一个由多维数组对象和用于处理数组的例程集合组成的库。
numpy 是Python数值计算中最重要的基础包,支持N维数组运算、处理大型矩阵、成熟的广播函数库、矢量运算、线性代数、傅里叶变换、随机数生成,也为数组运算提供大量的数学函数库。
与python原生array区别:
- import numpy as np #导入numpy并简写为np
- print(np.__version__)#查看版本
numpy中定义的最重要的对象是称为ndarray的N维数组类型。ndarray中的每个元素在内存中使用相同大小的块,它描述相同类型的元素集合。
- a=np.array([1,2,3,4])#把列表转换为数组
- type(a)#类型
-
- #out: numpy.ndarray
- np.array([1,2,3,4])#列表转换为数组
- np.array((1,2,3,4))#把元组转换为数组
- np.array(range(5))#range对象转换成数组
-
- #out:array([1, 2, 3, 4])
- # 数组转为列表
- a = np.array([1,2,3,4])
- a.tolist()
-
- #out:[1, 2, 3, 4]
用来创建一个线性序列的数组,在给定间隔内返回均匀间隔的值。
arange([start,] stop[, step,], dtype=None)
- np.arange(0,10,2) #开始,结束,步长,左闭右开
- #out:array([0, 2, 4, 6, 8])
np.linspace(start, stop, num=50, endpoint=True)
在指定的间隔内返回均匀间隔的数字,用作相同间隔采样。
start:标量,序列的起始值。
stop:标量,除非"endpoint"设置为False,否则为序列的结束值。
num:int,可选。要生成的样本数。默认值为50.必须为非负数。
np.full(shape,fill_value,dtype = None)
shape:int或int的序列新数组的形状,例如(2,3) 或2 。
fill_value:标量填充值。
dtype:数据类型,可选数组所需的数据类型默认值为"None"。
返回一个二维数组,其中对角线为1,其余为零的二维数组。
语法:randint(low, high=None, size=None, dtype)
语法:np.random.rand(size=None) / np.random.random(size=None)
返回随机浮点数,在半开区间[0.0,1.0)中
语法:np.random.uniform(low=0.0, high=1.0, size=None)
返回随机浮点数,在半开区间[a,b)中。
np.random.seed(Num)可以设置一组种子值,确保每次程序执行的时候都可以生成同样的随机数组。
均值为0,标准差为1的标准正态分布
语法:normal(平均值,标准偏差,形状)
作用:从正态分布中抽取随机样本。
如果平均值为0,标准差为1,或者不写这两个参数,就等同于标准正态分布np.random.randn()
属性 | 说明 |
ndim | 返回int,表示数组的维数 |
shape | 返回tuple,表示数组的尺寸 |
size | 返回int,表示数组的总元素 |
dtype | 返回data-type,描述数组中元素类型 |
itemsize | 返回int,表示数组每个元素的大小(字节为单位) |
基于以下两个数组,查看各个属性的使用方法:
- 如果是一维的数组,返回一个元素所构成的元组。
- 如果是二维的数组,返回(行数,列数)的元组。 例如:(2, 4)该二维数组是二行四列,(该二维数组有2个一维数组组成,每个一维数组里 有4个元素)
维度数的乘积
NumPy 要求数组必须包含同一类型的数据。
- a.dtype #元素类型
- #out: dtype('int32')
-
- b.dtype
- #out: dtype('int32')
-
- 如果类型不匹配,NumPy 将会向上转换: 字符串>浮点数>整数 查看类型
- ndarray.astype("数据类型名") 或者 ndarray.astype(np.数据类型名)
- b=np.array([1,2.1,3,4])
- b.dtype #numpy存储数据一样,以位宽最大为准,自动向上转换
- #out: dtype('float64')
只能用np.isnan() 来判断是否是空值
空值任何运算的结果均为空值
4.1 一维数组的索引
从0开始的,并且接受负索引来从数组的结尾进行索引。
每一个逗号, 代表索引的一个维度
可以使用切片和步长来截取不同长度的数组 x[start:stop:step]
变形 | 展平 | 转置 | 拼接 | 分裂 | |
原地修改 | shape() resize() | ||||
新生成 | reshape() | flatten() ravel() | swapaxes() T | concatenate() vstack() hstack() | split() vsplit() hsplit() |
1. 一维数组 如果有一个操作需要设置轴,一维数组只有一个轴,也就是轴0
axis=0 基本操作单位就是一维数组里的一个个元素
2. 二维数组 如果有一个操作需要设置轴,二维数组有两个轴,轴0和轴1
axis=0 基本操作单位是二维数组里的一个个一维数组
axis=1 基本操作单位是一维数组里的一个个元素
3. 三维数组 如果有一个操作需要设置轴,三维数组有三个轴,轴0、轴1和轴2
axis=0 基本操作单位是三维数组里的一个个二维数组
axis=1 基本操作单位是二维数组里的一个个一维数组
axis=2 基本操作单位就是一维数组里的一个个元素
使用ndarray.reshape()变形不会改变原有的数组形状,而是生成一个新的对象
在使用 reshape 时,可以将其中的一个维度指定为 -1,Numpy 会自动计算出它的真实值
数组的平铺,不管多少维,全部铺开变成一维
concatenate((a1, a2, ...), axis=0, out=None) 沿现有轴加入一系列数组。
a1,a2,...:array_like的序列。除尺寸外,阵列必须具有相同的形状
axis:int,可选。数组将连接的轴。如果axis为None,数组在使用前是扁平的。默认值为0。
语法:np.split(ary,indices_or_sections,axis = 0)
作用:将数组拆分为多个子数组。
- ary:ndarray。
- indices_or_sections:int或1-D数组。
- 如果indices_or_sections是一个整数N,则数组将被分割沿着'轴'进入N个相等的数组。
- 如果indices_or_sections是排序整数的1-D数组,则为条目指示数组被分割的“轴”的位置。
- 如果索引超过沿“轴”的数组维度,相应地返回一个空的子数组。
axis:int,可选。要拆分的轴,默认为0。
语法:np.vsplit(ary,indices_or_sections)
作用:将数组垂直拆分为多个子数组(按行)。
'vsplit'相当于'split'用'axis = 0'来'拆分',数组总是沿着第一个轴分开,无论数组尺寸如何。
语法:np.hsplit(ary,indices_or_sections)
作用:将数组水平拆分为多个子数组(按列)。
'hsplit'相当于'split'用'axis = 1'来'拆分',数组总是沿着第二个分开,轴与阵列尺寸无关。
数组与数值运算相当于每个元素都进行此运算
常用来 去重
交集
x数组元素是否包含y的布尔型数组
并集
差集
补集
广播机制:当我们使用通用函数对两个数组进行计算时,通用函数会对这两个数组的对应元素进行计算,因此它要求这两个数组shape相同。
如果shape不同的话,会进行如下的广播(broadcasting)处理:
- 让所有输入数组都向其中shape最长的数组看齐,shape中不足的部分都通过在前面加1补齐
- 输出数组的shape是输入数组shape的各个轴上的最大值
- 如果输入数组的某个轴和输出数组的对应轴的长度相同或者其长度为1时,这个数组能够用来计算,否则出错
- 当输入数组的某个轴的长度为1时,沿着此轴运算时都用此轴上的第一组值
矩阵和数组的关系:矩阵是数组的子类(也有广播机制)
- arr1 = np.arange(10).reshape(2,5) #创建一个数组
- np.save('arr1.npy',arr1)#保存的是单个数组
- brr=np.load('arr1.npy')#读取文件
- brr
- arr1 = np.arange(12).reshape(3,4)
- arr2 = np.arange(10)
- np.savez('arr12.npz',a1=arr1,a2=arr2)#保存的是两个数组到一个文件中
见 6.2.3 聚合函数 章节
本文仅仅简单介绍了numpy库中常用的一些方法:数组的创建、属性、变换、切片、运算等,全文档请查看官方文档。
如果觉得这篇笔记对你有帮助,可以点赞,关注,收藏一下啦,我是刚刚迈上数据分析道路的小菜鸟,欢迎讨论学习,如本文知识点有误,请多多指教。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。