• 属性: 维度 元素类型 大小 形状
  • 创建一维 : np.arange np.linspace 注意range()只能for循环
  • 创建零数组 一数组 单位数组
  • 数组拼接: hstack vstack stack(axis=0或1)
  • 数组拆分: hsplit vsplit
  • 数组交换行列
  • 添加一列或一行全为0或1
  • 创建随机数组
  • 找数组中行列的最大最小值
  • print(ar1 is ar2) 理解is 的用法, copy()一份数据
  • 数组+10 数组*2 都是对每个元素进行计算
  • np.sum(数组, axis=0或1) : 给每列求和 或者 给每行求和
  • 数组[ : 2 , 2 : ] : 意思是前两行, 第三列以后全部
  • bool索引, [bool , : ] , [ : , bool]
  • 回顾三元运算符 a = 3 if 3>2 else 4 输出a = 3
  • numpy中的三元运算符 a = np.where(t2<10,0,10)
  • numpy中clip 替换 极端小, 极端大的值, 箱型图找到替换减小误差
  • numpy 不能对int整型赋值np.nan, 必须先转换float
  • numpy 中统计非0 的个数 :np.count_nonzero(数组)

nd.array的属性

查看有几个维度
数组形状
数组大小
数组元素类型
数组元素站点字节大小
数组的内存地址
import numpy as np
ar = np.array([[1,2,3,4,5,6],[4,5,6,7,8,9]])
print(ar,type(ar))
print(ar.ndim) #查看有几个维度#2
print(ar.shape)#输出数据的形状#(2, 6)
print(ar.size)#12
print(ar.dtype)#查看数组里面数值的类型#int32
print(ar.itemsize)#查看数组里面元素的字节大小#4
print(ar.data)#<memory at 0x0000028296EB7AD0>

创建一维数组`

一维的规定间隔, 或者规定几个元素
print(np.arange(5.0,12,2))#5.0到12.0,步长为2,一维的#[ 5.  7.  9. 11.]
print(np.linspace(10,20,num=21))#10到20之间固定间隔创建20个元素的数组#[10.  10.5 11.  11.5 12.  12.5 13.  13.5 14.  14.5 15.  15.5 16.  16.5 17.  17.5 18.  18.5 19.  19.5 20. ]

创建多维的零数组, 一数组, 单位数组

零数组

规定数组大小, 并定义类型, int或float

print(np.zeros((3,5),dtype=np.float32))
[[0. 0. 0. 0. 0.][0. 0. 0. 0. 0.][0. 0. 0. 0. 0.]]

创建一个和其他任意数组一样形状的零数组

ar = np.array([list(range(10)),list(range(10,20))])
print(ar)
print(np.zeros_like(ar))
[[ 0  1  2  3  4  5  6  7  8  9][10 11 12 13 14 15 16 17 18 19]]
[[0 0 0 0 0 0 0 0 0 0][0 0 0 0 0 0 0 0 0 0]]

一数组

规定数组大小, 并定义类型, int或float

print(np.ones((3,5),dtype=np.float32))
[[1. 1. 1. 1. 1.][1. 1. 1. 1. 1.][1. 1. 1. 1. 1.]]

创建一个和其他任意数组一样形状的一数组

ar = np.array([list(range(10)),list(range(10,20))])
print(ar)
print(np.ones_like(ar))
[[ 0  1  2  3  4  5  6  7  8  9][10 11 12 13 14 15 16 17 18 19]]
[[1 1 1 1 1 1 1 1 1 1][1 1 1 1 1 1 1 1 1 1]]

创建单位数组

规定数组大小, 并定义类型, int或float

print(np.eye(4,dtype = np.float32))
[[1. 0. 0. 0.][0. 1. 0. 0.][0. 0. 1. 0.][0. 0. 0. 1.]]

数组竖直拼接

t1 = np.arange(12).reshape(2,6)
print(t1)
'''
[[ 0  1  2  3  4  5][ 6  7  8  9 10 11]]
'''
t2 = np.arange(12,24).reshape(2,6)
print(t2)
'''
[[12 13 14 15 16 17][18 19 20 21 22 23]]
'''t3 = np.vstack((t1,t2))#竖直拼接,竖的直接摞一起
print(t3)
'''
[[ 0  1  2  3  4  5][ 6  7  8  9 10 11][12 13 14 15 16 17][18 19 20 21 22 23]]
'''

竖直拼接,即两个数组上下直接叠在一起。

数组水平拼接

t1 = np.arange(12).reshape(2,6)
print(t1)
'''
[[ 0  1  2  3  4  5][ 6  7  8  9 10 11]]
'''
t2 = np.arange(12,24).reshape(2,6)
print(t2)
'''
[[12 13 14 15 16 17][18 19 20 21 22 23]]
'''t3 = np.hstack((t1,t2))#水平拼接,横横的拼接
print(t3)
'''
[[ 0  1  2  3  4  5 12 13 14 15 16 17][ 6  7  8  9 10 11 18 19 20 21 22 23]]
'''

水平拼接,即两个数组直接横着挨着放到一起。

注意:拼接操作,必须满足格式要求,竖直拼接,要求列数一样,水平拼接,要求行数一样

数组拆分

hsplit()
vsplit()
把原数组拆分为几个, 按横向或纵向

ar = np.arange(16).reshape(4,4)
print(ar)
[[ 0  1  2  3][ 4  5  6  7][ 8  9 10 11][12 13 14 15]]print(np.hsplit(ar,2)[0])#把4*4的数组横向拆分,[0]第一个即前两列
[[ 0  1][ 4  5][ 8  9][12 13]]print(np.vsplit(ar,2)[1])#把4*4的数组竖向拆分,[1]第二个即后两行
[[ 8  9 10 11][12 13 14 15]]

两数组交换行列

t1[[0,1],:] = t1[[1,0],:]#行交换,
print(t1)
'''
[[ 6  7  8  9 10 11][ 0  1  2  3  4  5]]
'''
t1[:,[0,2]] = t1[:,[2,0]]#列交换,0列和2列
print(t1)
'''
[[ 8  7  6  9 10 11][ 2  1  0  3  4  5]]
'''

常规操作,需要记忆。

numpy加载外部数据

us_file_path = './youku_date/US_video_data_numbers.csv'
us_data = np.loadtxt(us_file_path,delimiter=',',dtype=int)
print(us_data.shape)
#(1688, 4)

一般不使用numpy库读取外部数据,
一般会使用pandas库读取外部数据

pandas库读取外部数据

import pandas as pddf = pd.read_csv('./youku_date/dogNames2.csv')
print(df.info())#显示数据的基本统计信息

一般不使用numpy,而使用pandas因为pandas中有比较多且方便的读取外部数据的配套方法。

numpy数组中添加一列全为0或1的数

zero_data = np.zeros((us_data.shape[0],1)).astype(int)#默认创建的0数组是float类型的one_data = np.ones((us_data.shape[0],1)).astype(int)#创建一列数据,即有好多行us_data = np.hstack((us_data,zero_data))#完成拼接

找数组中每行或每列的最大最小值的位置

argmax()函数
参数axis = 0 找每行最大的位置
参数axis = 1 找每列最大的位置

t = np.eye(4)
a = np.argmax(t,axis=0)
print(a)

同理argmin()函数

创建随机数组

创建 0 到 1 的随机数组

  • .random.rand()

创建0 到100 的随机数组(上面的乘100)

  • .random.rand()*100

创建 0 到 1 的服从正态分布, 平均数0, 标准差1, 的数组

  • .random.randn()

创建 最小 到 最大 的整数数组, 括号规定形状

  • .random.randint(最小, 最大, (形状))

创建 最小 到 最大 的均匀数组, 括号规定形状

  • .random.uniform(最小, 最大, (形状))

创建规定平均值 标准差的数组

  • .random.normal(平均值, 标准差, (形状))
print(np.random.rand(3,4))
[[0.95702545 0.95412051 0.53945259 0.48031482][0.60733453 0.68697459 0.79968297 0.3828153 ][0.78499228 0.58308671 0.03537946 0.0780182 ]]print(np.random.rand(3,4)*100)
[[ 1.16784086  3.24742656 60.85346597 37.12256997][63.56454685  3.0959885  63.45543431 83.97919307][89.41001613  1.86029359 51.73772377 36.84759035]]print(np.random.randn(3,4))
[[-0.8175683  -0.46375323  1.06843984  0.3367699 ][ 0.55399042  0.18574952 -1.19086168 -1.1221194 ][-0.78863193  0.16552734  1.20207746  1.07304744]]print(np.random.randint(1,10,(3,4)))### 主要 不能取到10
[[4 9 5 3][1 5 3 9][6 8 6 4]]print(np.random.uniform(1,10,(3,4)))### 均匀分布
[[1.90575878 9.49945221 7.74993811 4.40233608][7.93641984 1.84274569 8.4046037  9.28109085][1.64306976 7.35618628 4.23083439 2.40198459]]

两个数组实质是同一个, 需要copy()

项目中, 原始数据不想乱改, 则需要copy复制一份

ar1 = np.arange(10)
ar2 = ar1
print(ar1 is ar2)# 输出 true 两个数组是同一个
ar1[2] = 100
print(ar1,ar2)#两个数组都会改变
ar3 = ar1.copy()
print(ar3 is ar1)# 输出 false 不是同一个

bool 索引

ar = np.arange(12).reshape(3,4)
print(ar)
[[ 0  1  2  3][ 4  5  6  7][ 8  9 10 11]]i = np.array([True,False,True])
j = np.array([True,True,False,False])print(ar[i,:])
[[ 0  1  2  3][ 8  9 10 11]]print(ar[:,j])
[[0 1][4 5][8 9]]print(ar[ar>5])
[ 6  7  8  9 10 11]

中括号嵌套

获取指定列
获取指定行
获取多个指定位置的元素

t1 = np.arange(12).reshape(3,4)
print(t1)
[[ 0  1  2  3][ 4  5  6  7][ 8  9 10 11]]print(t1[[0,2]])
[[ 0  1  2  3][ 8  9 10 11]]print(t1[:,[0,2]]) # 不可以省略前面的冒号
[[ 0  2][ 4  6][ 8 10]]print(t1[[0,2],[0,1]])
[0 9]

numpy中的三元运算符

np.where()
数组中的元素, 为true的修改为一种值, 为false的修改为一种值

t2 = np.arange(24).reshape(4,6)
a = np.where(t2<10,0,10)
print(a)
[[ 0  0  0  0  0  0][ 0  0  0  0 10 10][10 10 10 10 10 10][10 10 10 10 10 10]]

numpy中替换极端小, 极端大的值

数组. clip(极端小, 极端大)
数组中存在nan 的, 保持nan不变

t2 = np.arange(24).reshape(4,6)
a = t2.clip(10,18)
print(a)
[[10 10 10 10 10 10][10 10 10 10 10 11][12 13 14 15 16 17][18 18 18 18 18 18]]

python学习——numpy库相关推荐

  1. python的 numpy库学习总结和介绍(超详细)模块

    目录 前言 numpy是什么? 一.创建数据容器 1.np.array(),通过传递一个列表,元祖来创建 2.np.zeros(),np.ones(),np.empty(),np.full(),传递对 ...

  2. python 的numpy库中的mean()函数用法介绍

    这篇文章主要介绍了python 的numpy库中的mean()函数用法介绍,具有很好对参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 mean() 函数定义: 2 mean()函数功能: 求取均 ...

  3. Python学习-Scipy库稀疏矩阵的建立(面向列的稀疏矩阵、基于坐标格式的稀疏矩阵)

    Python学习-Scipy库稀疏矩阵的建立 稀疏矩阵指在矩阵中值为0的元素的数量远远多于非0值的矩阵 (非0元素总数/所有元素总数<=0.05) 稀疏矩阵的实现对象: csc_matrix() ...

  4. Python学习-Matplotlib库绘制简单点阵图、线型图操作

    Python学习-Matplotlib库绘制简单散点图图和线型图.标签设置以及刻度线设置操作 目录 1.Matplotlib绘图细节的简单理解 2.绘制点图.线型图 3.给图表设置复杂标注 4.移动刻 ...

  5. Python学习-Scipy库信号处理signal(过滤、快速傅里叶变换、信号窗函数、卷积)

    Python学习-Scipy库信号处理signal 目录 1.过滤:以某种方式修改输入信号 2.快速傅里叶变换 3.信号窗函数 4.卷积 导入库 import matplotlib.pyplot as ...

  6. Python:numpy库中的一些函数简介、使用方法之详细攻略

    Python:numpy库中的一些函数简介.使用方法之详细攻略 目录 numpy库中的一些函数简介.使用方法 1.np.concatenate() 1.1.函数案例 1.2.函数用法 numpy库中的 ...

  7. [转载] Python里面numpy库中zeros()的一些问题

    参考链接: Python中的numpy.zeros Python里面numpy库中zeros函数的一些问题 定义 本文记录了在使用numpy库中的zeros函数时遇到的一些问题 定义 用法:zeros ...

  8. Python的Numpy库的函数astype()在将大范围数据类型转换为小范围数据类型时并不是做饱和(saturate)操作(附实现饱和操作的方法)

    Python的Numpy库的函数astype()在将大范围数据类型转换为小范围数据类型时并不是做饱和(saturate)操作. 关于什么是饱和操作,可以参看博文:https://blog.csdn.n ...

  9. Python的Numpy库的ndarray对象常用构造方法及初始化方法

    Python的Numpy库的ndarray对象常用构造方法及初始化方法 本文收集Python的Numpy库的ndarray对象常用的构造方法及初始化方法,会不断更新. 目录 1 直接赋值初始化一个nd ...

最新文章

  1. 图像处理之基于NCC模板匹配识别
  2. Ubuntu NFS服务器的配置
  3. SecureCRT退出全屏的方法
  4. lg手机历史机型_华为后,又一中国芯崛起!国际手机巨头LG都采用它的芯片了...
  5. php图片提交,php+js实现图片的上传、裁剪、预览、提交示例
  6. php函数fiter,PHP filter_var() 函数和 Filter 函数使用说明
  7. 《IT经理世界》:中国软件业开始起飞
  8. Java——用户激活邮件工具类
  9. Windows Server 2013 安装zune 4.8中文版
  10. java 串口通信读取电子秤
  11. 南阳理工计算机与信息工程学院,南阳理工学院计算机与信息工程学院
  12. 微信如何html动图文件,微信里的gif动态图片如何导出保存出来?看完本文你就知道了...
  13. linux 下竟有想大白菜软件,大白菜U盘做PE及CDLINUX镜像共存的启动盘.pdf
  14. Packet Tracer安装包及安装教程(8.0版本)
  15. Visual Studio 2008下载地址汇总及相关注册破解方法.
  16. ECCV2022 Workshop | 复杂环境中的多目标跟踪和分割
  17. :要求查询出每一个雇员的编号,姓名,工资,领导的姓名,部门名称及位置,工资所在公司的工资等级
  18. 32位linux装64位rpm包,360浏览器提供rpm包(支持MIPS64)及32位deb包(兆芯)
  19. 免费下载国际学术论文SCI期刊文献软件,SCI-HUB EVA
  20. 静态重定位和动态重定位

热门文章

  1. oracle ola_Ola HallengrenSQL Server维护解决方案–索引和统计信息维护
  2. Android优化方案之--Fragment的懒加载实现
  3. linux交换分区swap分区的构建
  4. 读取配置文件(configparser,.ini文件)
  5. ROS学习笔记(一)——软件版本的选择
  6. Servlet 中的out.print()与out.writer()的区别
  7. a:link a:visited a:hover a:active四种伪类选择器的区别
  8. Spring3 工具类大汇集
  9. 帆软报表,报错:sql注入攻击问题
  10. BZOJ2217 [Poi2011]Lollipop 【贪心】