机器学习-数据科学库 04 numpy 教程

Python 数据科学速查表 - Numpy、Pandas、Matplotlib 及 Jupyter Notebook 欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答、求职一站式搞定! 对商业智能BI、大数据分析挖掘、机器学习,python,R等数据领域感兴趣的同学加微信:tsaiedu,并注明消息来源,邀请你进入数据爱好者交流群,数据爱好者们都在这儿。 作者简介:呆鸟 Python爱好者社区专栏作者,未经容许,禁止转... 阅读详情

简介

https://numpy.org/

The fundamental package for scientific computing with Python

数组创建

import numpy as np

# 使用 numpy 生成数组,得到ndarray的类型
t1 = np.array([1, 2, 3, ])
t2 = np.array(range(10))

# 直接生成 ndarray
t3 = np.arange(4, 10, 2)

# 指定元素的类型创建数组
# https://numpy.org/doc/stable/reference/arrays.dtypes.html
t4 = np.array(range(1, 4), dtype="i1")
print(t4)

# ndarray 的元素类型
# 根据系统架构 如 x64 为 int64
print(t4.dtype)

# numpy中的bool类型
t5 = np.array([1, 1, 0, 1, 0, 0], dtype=bool)

# 取小数点后几位
t7 = np.array([random.random() for i in range(10)])
t8 = np.round(t7, 2)

数组形状

# 查看数组形状
arr.shape


# 修改数组形状
arr.reshape(3, 4)
arr.reshape(2, 3, 2)

arr.reshape((arr.size(), ))


广播

# 每个元素都 + * /标量
arr = arr + 3
arr = arr * 3
arr = arr / 3

# 相同维度矩阵对应元素运算
arr = arr1 + arr2
arr = arr1 * arr2
arr = arr1 / arr2

# 不同维度数组,广播原则
# 从末尾开始算起的维度相符或者其中一方为1,广播兼容。广播会在缺失或者长度为1的维度进行
# https://numpy.org/doc/stable/user/basics.broadcasting.html
arr3x4 = arr3x4 - arr3x1

# 不能计算
arr = arr3x3x3 - arr3x2

# 可以计算
arr = arr3x3x2 - arr3x3
arr = arr3x3x2 - arr3x2

例子,二维数组,每列分别减去列平均值

t7 = np.array([random.random() for i in range(20)])
t7 = t7.reshape((4, 5))

# 每一列求平均值后,按列分别计算差值
t7 = t7 - numpy.average(t7, 0)

轴

  • 对于 1 维数组有 0 轴,对于 2 为住宿有 0,1 轴,以此类推

读取本地数据

# https://numpy.org/doc/stable/reference/generated/numpy.loadtxt.html
# unpack = 转置
t2 = np.loadtxt(file_path, delimiter=",", dtype="int", unpack=False)

转置

t = t.transpose()
t = t.T

# 交换轴
t = t.swapaxes(1, 0)

索引和切片

二维数组例子:

# 取某行
out = data[2]

# 取连续的多行到结尾
out = data[2:]

# 取指定的多行
out = data[[2, 8, 10]]

# 取指定列
out = data[:, 1]

# 取列到末尾
out = data[:, 2:]

# 取指定的列
out = data[:, [0, 2]]

# 取指定行指定列
out = data[2, 3]

# 取指定多行指定多列
out = data[2:5, 1:4]

# 取多个不相邻的点结果是一维数组
out = data[[0, 2], [0, 1]]

数值修改

布尔索引

# 获取所有指定条件值
out = data[data < 10]

# 修改所有小于 10 的数据,改为3
# 原地修改
data[data < 10] = 3

# 三元运算符
# 小于 3 则为 100 否则 300
np.where(n <= 3, 100, 300)

裁剪

# 对每个元素的值进行上下限裁剪
out = data.clip(10, 18)

赋值 nan

nan = not a number,

  • 类型为 float
  • 0 / 0 会出现
  • 输入文件缺失或者 cast 异常
  • inf 正无穷 -inf 负无穷
  • nan == nan 为 False
  • nan 任何操作结果都是 nan
  • 注意点:
    • 一般 nan 考虑影响,替换为 均值 or 中值(排序后中间的),不见已替换为 0
# 转换类型为 float
data = data.astype(float)

# 赋值
data[i, j] = numpy.nan

# 判断 nan 个数
numpy.count_nonzero(data != data)
numpy.count_nonzero(numpy.isnan(data))

统计函数

默认返回多维数组的全部的统计结果,如果指定axis则返回一个当前轴上的结果


# 求和
t.sum(axis=None)

# 均值
t.mean(a,axis=None)  受离群点的影响较大

# 中值
np.median(t,axis=None) 


# 最大值
t.max(axis=None) 

# 最小值
t.min(axis=None)

# 极值
np.ptp(t,axis=None) 即最大值和最小值只差

# 标准差
# 一组数据对平均值的分散程度
t.std(axis=None) 

例子,替换 nan 为每列均值

# coding=utf-8
import numpy as np

# print(t1)
def fill_ndarray(t1):
    for i in range(t1.shape[1]):  #遍历每一列
        temp_col = t1[:,i]  #当前的一列
        nan_num = np.count_nonzero(temp_col!=temp_col)
        if nan_num !=0: #不为0,说明当前这一列中有nan
            temp_not_nan_col = temp_col[temp_col==temp_col] #当前一列不为nan的array

            # 选中当前为nan的位置,把值赋值为不为nan的均值
            temp_col[np.isnan(temp_col)] = temp_not_nan_col.mean()
    return t1

if __name__ == '__main__':
    t1 = np.arange(24).reshape((4, 6)).astype("float")
    t1[1, 2:] = np.nan
    print(t1)
    t1 = fill_ndarray(t1)
    print(t1)

数据拼接

二维数组拼接:

# 竖直拼接
# 对应 numpy.vsplit()
numpy.vstack((t1, t2))

# 水平拼接
# 对应 numpy.hsplit()
numpy.hstack((t1, t2))

行列交换

# 交换1,2行
t[[1, 2], :] = t[[2, 1], :]

# 交换1,2列
t[:, [1, 2]] = t[, [2, 1]]

工具方法

# 获取按照某个轴,最大值最小值的位置,输出是一维数组
np.argmax(t, axis=0)
np.argmin(t, axis=1)

# 创建一个全0的数组
np.zeros((3, 4))

# 创建一个全1的数组
np.ones((3, 4))

# 创建一个对角线为1的正方形数组(方阵)
np.eye(3)

随机方法

# n 维随机数组
np.random.rand(d0, d1, ..dn)

# n 维正态分布随机数组
np.random.randn(d0, d1, ..dn)

# 按 shape 和上下限随机整型
np.random.randint(low, high, (shape))

# 均匀分布
np.random.randint(low, high, (size))

# 正态分布抽取样本
np.random.normal(low, high, (size))

# s 为种子随机
np.random.seed(s)
python dataframe astype 字段类型转换方法 使用astype实现dataframe字段类型转换 # -*- coding: UTF-8 -*- import pandas as pd df = pd.DataFrame([{'col1':'a', 'col2':'1'}, {'col1':'b', 'col2':'2'}]) print df.dtypes df['col2'] = df['col2'].astype('int') print '-----------' print df.dtypes df['col2'] = df['col2'].astype('float64') print '-----------' print 立即下载

相关推荐

五、e2studio VS STM32CubeIDE之汉化

介绍stm32cubeide汉化方案和汉化包e2studio自带汉化包,在安装过程中可选择安装e2studio STM32CubeIDE切换中英文。

cl234583745的博客 1770

astype函数的使用

转换结果为:[1.0,2.0,3.0,4.0]

wu030326的博客 3996

ThinkBook 16 2024 Ubuntu驱动全攻略:从无线网卡到触控板

本文详细介绍了ThinkBook 16 2024在Ubuntu系统下的驱动问题解决方案,涵盖无线网卡、蓝牙、显卡和触控板等关键硬件的驱动修复步骤。通过具体命令和配置指南,帮助用户快速解决兼容性问题,提升Ubuntu在ThinkBook上的使用体验。

weixin_29200741的博客 830

pandas 转换类型函数astype()

pandas类型转换函数

vergil_zsh的博客 1万+

直流无刷减速电机选型指南:从KV值到霍尔传感器,新手必看的5个关键参数

本文详细解析直流无刷减速电机选型的5个关键参数,包括KV值、转矩、电流与功率、减速比选择以及霍尔传感器配置。通过实战案例和避坑策略,帮助工程师精准匹配电机性能与负载需求,提升工业自动化设备的可靠性和效率。特别强调霍尔传感器在精准控制中的关键作用。

alice7model的博客 624

电子产品设计中EFT防护的关键技术与实践

本文深入探讨了电子产品设计中EFT(快速瞬变脉冲群)防护的关键技术与实践。文章从EFT干扰的原理入手,系统阐述了通过优化PCB布局与地平面设计、构建电源与信号端口滤波防护电路、精选核心器件以及实施软件容错策略,来构建多层次、系统性的抗干扰防线,助力产品稳定通过严苛的电磁兼容测试。

e4f5g6h的博客 788

数据治理 | 数据分析与清洗工具:Pandas 数据类型转换(赠送本文同款数据!!)

本期文章将会继续学习 Pandas 工具,学习如何转换数据类型。

weixin_55633225的博客 1818

springboot源码 红色J_通达信副图指标源码之,出手就赢

今天跟大家分享一个通达信副图指标源码,本指标没有未来函数,因为本指标没有卖点提示,所以本指标需配合主图指标使用效果会更好,简单易懂,很容易明白,所以就不过多介绍使用方法了,以下是指标的贴图。风险提示!股市有风险买卖需谨慎,本指标只做参考建议,不做买卖交易结果,自己要对自己交易结果的盈亏负责,以下是指标的源码。VAR2:=REF(LOW,1);VAR3:=SMA(ABS(LOW-VAR2),3,1)...

weixin_39859909的博客 2851

data pandas包应用

## 日期时间处理 和 单极 索引处理 首先先导包 import pandas as pd data = pd.read_csv('D:/city_temperature.csv',dtype= {'State':object}) 如果直接用数组访问方式会有数据类型不匹配的问题 因为数据集的年月日都是int类型,你和一个字符相加 不能拼接 data['Date'] = data['Year'].astype(str) + '/' + data['Month'].astype(str).

m0_56552415的博客 1035

1、世界级模拟电路设计指南

本文详细探讨了模拟电路设计的各个方面,从基础概念到实际应用,涵盖了元件选择、滤波器设计、反馈系统、噪声问题以及SPICE仿真的优缺点。文中还提供了设计实例和无计算机设计方法,旨在帮助工程师提升模拟电路设计的效率与可靠性。

s1t2u3的博客 99

★教程2:fpga学习教程入门100例目录【含程序操作讲解视频】

★基础入门 1.FPGA开发软件安装

FPGA/MATLAB学习教程/源码/项目合作开发 7万+

python 数据分析一:numpy常规用法

本人最近在对《利用python进行数据分析》一书,将上面的知识点进行总结一下,以后每天都更新一下;每天进步一点点数学名词:数学和统计方法 mean 算数平均数 std 标准差 var 方差 自由度 在统计学中,自由度(degree of freedom, df)指的是计算某一统计量时,取值不受限制的变量个数。通常df=n-k。其中n为样本数量, k为被限制的条件数或变量个数,或计算某一统计量时...

qq_38788128的博客 1261

深入浅出块I/O子系统(四)请求处理过程

BIO请求处理的流程 函数scsi_request_fn()代码(摘自文件drivers/scsi/scsi_lib.c) (1)static void scsi_request_fn(struct request_queue *q) (2)int scsi_dispatch_cmd(struct scsi_cmnd *cmd) { host->hostt->queuecommand(host, cmd) } (3)struct sas_internal *i sas_queuec

sinat_37817094的博客 1349

深度解析Umi-OCR:开源免费的离线OCR软件实战指南

在数字化办公和开发工作中,**OCR文字识别**已成为处理图像文本的核心技术。作为一款开源、免费的离线OCR软件,Umi-OCR凭借其强大的**截图识别**和**批量处理**功能,为开发者提供了高效的文字提取解决方案。无需网络连接,支持多国语言库,这款工具正在重新定义本地OCR应用的边界。 ## 🔍 Umi-OCR的核心功能架构 ### 截图OCR:即时识别的高效工具 Umi-OCR的**

gitblog_00022的博客 840

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

猫头虎 分享:Python库 NumPy 的简介、安装、用法详解入门教程

NumPy是一个开源的Python库,专为数值计算而设计。它提供了支持大规模多维数组和矩阵的对象,以及对这些数组进行操作的各种函数。这使得NumPy在数据科学、机器学习和人工智能领域中成为一个基础工具。NumPy是Python数据科学和人工智能领域中不可或缺的工具。它提供了强大的多维数组处理能力和丰富的数学函数库,使得复杂的数学计算变得简单高效。在未来,随着数据科学和AI技术的发展,NumPy的功能和性能还会进一步提升。对于初学者来说,掌握NumPy是进入数据科学和AI领域的必备技能。

猫头虎技术团队:授渔优于赠鱼,兴趣引领智慧,探索之乐尤显珍贵。商务合作+:Libin9iOak ,万粉变现+:优快云WF,猫头虎承诺每年免费为100名C站创作者做账号流量诊断服务!全网搜:猫头虎技术团队,点击文章底部名片或直接私信我一切皆可谈,快找虎哥! 7440

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

盘点数据科学最流行的29个Python库,数据分析必看

导读: 我们都着眼于如何使用现有的库来避免重复工作,从而使程序开发工作事半功倍。 通常,开发大量原始代码是一个费时费力的工作,为了避免这种情况,我们会尽可能多地使用库中已有的类来创建对象,通常仅需要一行代码。 因此,库能够帮助我们使用适量的代码执行重要的任务。 本文介绍数据科学中会经常使用多种Python标准库、数据科学库和第三方库。 01 Python标准库 16 / 29 Python标准库提供了丰富的功能,包括文本/二进制数据处理、数学运算、函数式编程、文件/目录访问、数据持久

码农黑羽的博客 2040

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

盘点数据科学最流行的29个Python库,数据分析必看(1)

Python崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习 Python 门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS等更加高级的领域。Python可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

m0_60707660的博客 1051

盘点数据科学最流行的29个Python库

导读:我们都着眼于如何使用现有的库来避免重复工作,从而使程序开发工作事半功倍。通常,开发大量原始代码是一个费时费力的工作,为了避免这种情况,我们会尽可能多地使用库中已有的类来创建对象,通常...

大数据 349

numpy详细教程(涵盖全部,看这一篇就够了)

numpy安装到使用,看这一篇完全够了,不带一点废话

m0_74344139的博客 16万+

二十六、【人工智能】【机器学习】【Python】- 机器学习中的Python库全解析:掌握数据科学工具箱的艺术

在机器学习领域,Python 是最常用的编程语言之一,因为它拥有丰富的库支持,使得开发人员可以高效地构建和部署机器学习模型。我们在学习机器学习时候,需要掌握了学习的一些基础库和算法库的介绍。

技术分享、程序员趣事、行业趋势等内容! 974

人工智能之数据科学库sklearn

sklearn,全称scikit-learn,是python中的机器学习库,建立在numpy、scipy、matplotlib等数据科学包的基础之上,涵盖了机器学习中的样例数据、数据预处理、模型验证、特征选择、分类、回归、聚类、降维等几乎所有环节,功能十分强大

十年以上架构设计经验,专注于软件架构和人工智能领域,对机器视觉、NLP、音视频等领域都有涉猎 5745

过一遍Python的Numpy库(最后因为各种原因只过到一半)

ndarray无疑是Numpy库最重要的对象,其名字的来历为N-dimensionalarray。Anndarrayisa(usuallyfixed-size)multidimensionalcontainerofitemsofthesametypeandsize.(从这句话可知ndarray对象中的元素都是相同类型和size的)运行结果如下这里可以结合02-02-38-setfield()方法作进一步的认识和了解。运行结果如下可见,索引被展平到一维空间了。.........

昊虹AI笔记 3715

numpy reshape函数_机器学习:Python常用库——Numpy库

图 | 源网络文 | 5号程序员01从前面的学习中我们知道,机器学习是以大量数据为基础的。由此就引出一个问题:那么多的数据我们要如何处理呢?别担心,嘻嘻,Python开发人员早有准备。为了拓宽数据科学方面的应用,Numpy库应运而生。Numpy是Python用来进行矩阵运算、高维数组运算的数学计算库。接下来,我就简单介绍一下Numpy的相关使用。02导入Numpy库为了书写方便,一般用别...

weixin_39560207的博客 251

04_Numpy的函数np.where()—满足条件的处理

04_Numpy的函数np.where()—满足条件的处理 函数Numpy.where()可以对Numpy数组(ndarray)进行条件的指定,对满足条件的元素进行替换,修改,或一些特定的处理。同时也可以取得满足条件元素的进行索引。 对以下内容进行说明: numpy.where()的概要 多个条件式的使用 满足条件元素的替换 满足条件元素的处理 满足条件元素的索引 Numpy.where()的...

qq_18351157的博客 1万+
上一篇: 机器学习-数据科学库 03 matplotlib 不同统计图对比
下一篇: 机器学习-数据科学库 05 pandas 教程
eddiechen10081
博客等级 码龄11年 1粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值