数据分析之Numpy的基本操作
Numpy
- NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
1 创建 ndarray
使用np.array()创建
import numpy as np
# 一维数据创建
ret = np.array([1, 2, 3])
# 二维数据创建
ret = np.array([[1, 2, 3], [4, 5, 6]])
print(ret)
numpy默认ndarray的所有元素的类型是相同的
如果传进来的列表中包含不同的类型,则统一为同一类型,优先级:str>float>int
使用matplotlib.pyplot获取一个numpy数组,数据来源于一张图片
import matplotlib.pylab as plt
# 图片数据转化为数组
img_arr = plt.imread('./cat.jpg')
# 数组转图片
img_show = plt.imshow(img_arr)
# 操作该numpy数据,该操作会同步到图片中
plt.imshow(img_arr-100)
使用np的routines函数创建
np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None) 等差数列
np.linspace(0,100,num=20)
np.arange([start, ]stop, [step, ]dtype=None)
np.arange(0,100,2)
np.random.randint(low, high=None, size=None, dtype='l') 随机生成
np.random.seed(100) #固定随机性#随机因子:系统的时间
arr = np.random.randint(0,100,size=(4,5)) #size 4行5列
np.random.random(size=None)
生成0到1的随机数,左闭右开 np.random.seed(3)
np.random.random(size=(4,5)) # 4行5列
2 ndarray的属性
4个必记参数: ndim:维度 shape:形状(各维度的长度) size:总长度
dtype:元素类型
arr = np.random.randint(0, 100, size=(4, 5))
arr.ndim
arr.shape
...
3 ndarray的基本操作
索引
- 一维与列表完全一致 多维时同理
切片
- 一维与列表完全一致 多维时同理
np.random.seed(100) # 固定随机性#随机因子:系统的时间
arr = np.random.randint(0, 100, size=(4, 5))
#获取二维数组前两行
arr[0:2]
#获取二维数组前两列
arr[:,0:2]
# 获取二维数组前两行和前两列数据
arr[0:2,0:2]
# 将数组的行倒序
arr[::-1]
#列倒序
arr[:,::-1]
#全部倒序
arr[::-1,::-1]
# 图片倒置,裁剪
plt.imshow(img_arr[:,::-1,:])
变形
使用arr.reshape()函数,注意参数是一个tuple!
将一维数组变形成多维数组 arr_1.reshape((2,10))
arr_1 = np.random.randint(0, 100, size=(1,20))
print(arr_1)
print(arr_1.reshape((2, 10)))
'''[[ 9 93 86 2 27 4 31 1 13 83 4 91 59 67 7 49 47 65 61 14]]
[[ 9 93 86 2 27 4 31 1 13 83]
[ 4 91 59 67 7 49 47 65 61 14]]
'''
将多维数组变形成一维数组 arr.reshape((20,))
级联
np.concatenate()
一维,二维,多维数组的级联,实际操作中级联多为二维数组
np.concatenate((arr,arr,arr),axis=1)
array([[ 8, 24, 67, 87, 79],
[48, 10, 94, 52, 98],
[53, 66, 98, 14, 34],
[24, 15, 60, 58, 16]])
np.concatenate((arr,arr,arr),axis=1)
array([[ 8, 24, 67, 87, 79, 8, 24, 67, 87, 79, 8, 24, 67, 87, 79],
[48, 10, 94, 52, 98, 48, 10, 94, 52, 98, 48, 10, 94, 52, 98],
[53, 66, 98, 14, 34, 53, 66, 98, 14, 34, 53, 66, 98, 14, 34],
[24, 15, 60, 58, 16, 24, 15, 60, 58, 16, 24, 15, 60, 58, 16]])
应用,合并参数一致的图片
img_3 = np.concatenate((img_arr,img_arr,img_arr),axis=1)
img_9 = np.concatenate((img_3,img_3,img_3),axis=0)
plt.imshow(img_9)
级联的参数是列表:一定要加中括号或小括号
维度必须相同
形状相符:在维度保持一致的前提下,如果进行横向(axis=1)级联,必须保证进行级联的数组行数保持一致。如果进行纵向(axis=0)级联,必须保证进行级联的数组列数保持一致。
可通过axis参数改变级联的方向
4 ndarray的聚合操作
求和np.sum
arr.sum(axis=1) # 横向(axis=1)级联,纵向(axis=0)级联
最大最小值:np.max/ np.min
平均值:np.mean()
其他聚合操作
5 ndarray 的排序
p.sort()与ndarray.sort()都可以,但有区别:
- np.sort()不改变输入
- ndarray.sort()本地处理,不占用空间,但改变输入
np.sort(arr,axis=0)
数据分析之Numpy的基本操作的更多相关文章
- 数据分析 之 NumPy
目录 简单了解数据分析 Python数据分析三剑客(Numpy,Pandas,Matplotlib) 简单使用np.array() 使用np的routines函数创建数组 ndarray N维数组对象 ...
- 利用Python进行数据分析(5) NumPy基础: ndarray索引和切片
概念理解 索引即通过一个无符号整数值获取数组里的值. 切片即对数组里某个片段的描述. 一维数组 一维数组的索引 一维数组的索引和Python列表的功能类似: 一维数组的切片 一维数组的切片语法格式为a ...
- 数据分析入门——numpy类库基础知识
numpy类库是数据分析的利器,用于高性能的科学计算和数据分析.使用python进行数据分析,numpy这个类库是必须掌握的.numpy并没有提供强大的数据分析功能,而是它提供的ndarray数据结构 ...
- Python numpy的基本操作你一般人都不会
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. PS:如有需要最新Python学习资料的小伙伴可以加点击下方链接自行获取 ...
- python numpy的基本操作
站长资讯平台:文章目录0.NumPy 与 ndarry1.数组属性查看:类型.尺寸.形状.维度2.numpy元素中数据存储方式,数据类型,类型转换2.1 查看元素数据存储类型2.2 元素数据存储类型转 ...
- 数据分析01 /numpy模块
数据分析01 /数据分析之numpy模块 目录 数据分析01 /数据分析之numpy模块 1. numpy简介 2. numpy的创建 3. numpy的方法 4. numpy的常用属性 5. num ...
- NumPy的基本操作
1 简介 NumPy 是用于处理数组的 python 库,部分用 Python 编写,但是大多数需要快速计算的部分都是用 C 或 C ++ 编写的.它还拥有在线性代数.傅立叶变换和矩阵领域中工作的函数 ...
- (零)机器学习入门与经典算法之numpy的基本操作
1.根据索引来获取元素* 创建一个索引列表ind,用来装载索引,当numpy数据是一维数据时:一个索引对应的是一个元素具体的例子如下: import numpy as np # 数据是一维数据时:索引 ...
- 数据分析三剑客 numpy,oandas,matplotlib
数据分析: 是不把隐藏在看似杂乱无章的数据域背后的信息提炼出来,总结出所研究对象内在规律 NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩 ...
随机推荐
- 在命令行中输入python会跳转到商店问题解决,python环境变量的配置
安装python出了点问题,明明安装了,在应用商店显示已获取,可是在命令行输入python检验时就直接跳转到win10系统自带的应用商店...... 这不免让我怀疑是不是没有安装好python~但是它 ...
- 【C# IO 操作】 Path 路径类 |Directory类 |DirectoryInfo 类|DriveInfo类|File类|FileInfo类|FileStream类
Directory类 Directory类 是一个静态类,常用的地方为创建目录和目录管理. 一下来看看它提供的操作. 1.CreateDirectory 根据指定路径创建目录.有重载,允许一次过创建多 ...
- linux目录跳转的好武器z.sh
转至:https://blog.csdn.net/molaifeng/article/details/14123123 中午刷微博时看到一篇有关z.sh的介绍. 众所周知,在linux系统中进入目录都 ...
- Centos6/7系统基础配置-从零到无
转至:https://www.cnblogs.com/Pigs-Will-Fly/p/13855300.html 目录 前言 系统配置 文档作用 一.Centos 6.X 系列配置 1.1 主机名 ...
- java复习面向对象(二)
java复习面向对象(二) 1.static关键字 举例图片 静态变量 使用static修饰的成员变量是静态变量 如果一个成员变量使用了关键字static,那么这个变量不属于对象自己,而属于所在的类多 ...
- 一、MarkDown学习笔记
MakrDown学习 MarkDown是什么? 是一种纯文件格式的标记语言,跟我们写txt和word是一样的,不过它有一些简单的标记,可以使普通文本具有一定的格式. MarkDown有什么样式? 样式 ...
- BUG | ValueError: Shape mismatch: The shape of labels (received (320,)) should equal the shape of logits except for the last dimension (received (64, 5)).
1 TensorFlow报错 报错信息: 2 报错原因 字面原因: 这个问题是由于输出层的类别数和训练数据shape不同导致. 底层原因: Step1 : 代码中,我通过ImageDataGenera ...
- linux作业--第七周
1.解决DOS攻击生产案例:根据web日志或者或者网络连接数,监控当某个IP 并发连接数或者短时内PV达到100,即调用防火墙命令封掉对应的IP,监控频率每隔5分钟.防火墙命令为:iptables - ...
- 理解并手写 bind() 函数
有了对call().apply()的前提分析,相信bind()我们也可以手到擒来. 参考前两篇:'对call()函数的分析' 和 '对apply()函数的分析',我们可以先得到以下代码: Functi ...
- Linux 常用管理命令
系统 # uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # cat /proc/cpuinfo # 查看CPU信息 # ho ...