热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

numpy'ssovlingspecificproblem(numpy之解决特定问题)

numpyssovlingspecificproblem(numpy之解决特定问题)numpyssovlingspecificproblem(numpy之解决特

 

numpy's sovling specific problem(numpy之解决特定问题)

 

numpy's sovling specific problem(numpy之解决特定问题)

Table of Contents

  • 1 前言
  • 2 特定问题
    • 2.1 numpy.lib.stride_tricks.as_strided
    • 2.2 numpy.meshgrid()

1 前言

  • 这几天开始熟悉numpy的模块,推荐Numpy Cookbook。有例子,蛮好上手。不得不提一下之前搭建的python开发

环境,确实带来了很大的方便。对每一章,只需要快速建立一个文件,把对应的example复制到文件中去,然后 把buffer直接发送到python运行环境,就能马上看到结果。对于不懂的语句,又能eval 当前语句。如果想做 实验,也可以直接在buffer中写,不用跳到python的交互式中去。而且还可以省去没一个例子之前的模块导入时 间。真是既方便又省时。以后有时间可以写文章谈谈这种快速学习环境。

  • 学习numpy或scipy等数据分析模块,需要安装对应的开发包,这里推荐anaconda,跨平台的python分析工具包汇

总,不仅带了很多分析库,还自带ipython qtconsole和notebook。对于想快速了解python数据分析的来说真是太 方便了,要感谢为此做出努力的人。直接在scipy官网上可以找到,windows上直接下载安装就可以用,linux也一 样,只不过,我把里面anaconda中库的路径添加到PYTHONPATH中去。

  • 下面便是我自己探索的过程中碰到的一些比较费解的问题,分享出来,供新手们参考。也给我自己当作一个笔记。 希望以后可以随着学习的深入,写成一个系列。

2 特定问题

 

2.1 numpy.lib.stride_tricks.as_strided

书中例子

sudoku = numpy.array([
[2, 8, 7, 1, 6, 5, 9, 4, 3],
[9, 5, 4, 7, 3, 2, 1, 6, 8],
[6, 1, 3, 8, 4, 9, 7, 5, 2],
[8, 7, 9, 6, 5, 1, 2, 3, 4],
[4, 2, 1, 3, 9, 8, 6, 7, 5],
[3, 6, 5, 4, 2, 7, 8, 9, 1],
[1, 9, 8, 5, 7, 3, 4, 2, 6],
[5, 4, 2, 9, 1, 6, 3, 8, 7],
[7, 3, 6, 2, 8, 4, 5, 1, 9]
])

strides=sudoku.itemsize * numpy.array([27,3,9,1])
shape = (3, 3, 3, 3)
squares = numpy.lib.stride_tricks.as_strided(sudoku, shape=shape, strides=strides)

初看到应该跟我有同样的疑惑,这个[27,3,9,1] 和 (3, 3, 3 ,3) 是怎么来的,经过试验,应该等价于以下语句

>>> [(27*i+3*j+9*k+z) for i in range(3) for j in range(3) for k in range(3) for z in range(3) ]

[0, 1, 2, 9, 10, 11, 18, 19, 20, 3, 4, 5, 12, 13, 14, 21, 22, 23, 6, 7, 8, 15, 16, 17,
24, 25, 26, 27, 28, 29, 36, 37, 38, 45, 46, 47, 30, 31, 32, 39, 40, 41, 48, 49, 50, 33,
34, 35, 42, 43, 44, 51, 52, 53, 54, 55, 56, 63, 64, 65, 72, 73, 74, 57, 58, 59, 66, 67,
68, 75, 76, 77, 60, 61, 62, 69, 70, 71, 78, 79, 80]

看输出,便可知这样建立了数组元素的索引。

2.2 numpy.meshgrid()

另一个例子

coordinates = numpy.meshgrid(xindices, yindices)

下面是我自己写的注释,也是建立索引的意思。

# meshgrid
# x = numpy.linspace(1,3,3)
# y = numpy.linspace(1,2,2)
# meshgrid(x,y)
# [array([[1., 2., 3.],
# [1., 2., 3.]]),
# array([[1., 1., 1.],
# [2., 2., 2.]])]
# and than can generate
# => [(1,1) (1,2) (1,3)
# (2,1) (2,2) (2,3)]

Date: 2015-07-14T23:05+0800

Author: 行者知

Org version 7.9.3f with Emacs version 24

Validate XHTML 1.0

推荐阅读
  • MySQL性能优化与调参指南【数据库管理】
    本文详细探讨了MySQL数据库的性能优化与参数调整技巧,旨在帮助数据库管理员和开发人员提升系统的运行效率。内容涵盖索引优化、查询优化、配置参数调整等方面,结合实际案例进行深入分析,提供实用的操作建议。此外,还介绍了常见的性能监控工具和方法,助力读者全面掌握MySQL性能优化的核心技能。 ... [详细]
  • 通过菜单项触发Activity启动过程详解
    本文详细解析了通过菜单项触发Activity启动的过程。在Android开发中,菜单项是用户与应用交互的重要途径之一。文章从技术角度深入探讨了如何通过菜单项触发特定Activity的启动,并提供了具体的代码示例和实现步骤。通过对菜单项的响应处理、Intent的创建与传递等关键环节的分析,帮助开发者更好地理解和掌握这一机制。 ... [详细]
  • 分布式开源任务调度框架 TBSchedule 深度解析与应用实践
    本文深入解析了分布式开源任务调度框架 TBSchedule 的核心原理与应用场景,并通过实际案例详细介绍了其部署与使用方法。首先,从源码下载开始,详细阐述了 TBSchedule 的安装步骤和配置要点。接着,探讨了该框架在大规模分布式环境中的性能优化策略,以及如何通过灵活的任务调度机制提升系统效率。最后,结合具体实例,展示了 TBSchedule 在实际项目中的应用效果,为开发者提供了宝贵的实践经验。 ... [详细]
  • 计算 n 叉树中各节点子树的叶节点数量分析 ... [详细]
  • 本文深入探讨了 MXOTDLL.dll 在 C# 环境中的应用与优化策略。针对近期公司从某生物技术供应商采购的指纹识别设备,该设备提供的 DLL 文件是用 C 语言编写的。为了更好地集成到现有的 C# 系统中,我们对原生的 C 语言 DLL 进行了封装,并利用 C# 的互操作性功能实现了高效调用。此外,文章还详细分析了在实际应用中可能遇到的性能瓶颈,并提出了一系列优化措施,以确保系统的稳定性和高效运行。 ... [详细]
  • 深入解析Tomcat:开发者的实用指南
    深入解析Tomcat:开发者的实用指南 ... [详细]
  • MongoDB高可用架构:深入解析Replica Set机制
    MongoDB的高可用架构主要依赖于其Replica Set机制。Replica Set通过多个mongod节点的协同工作,实现了数据的冗余存储和故障自动切换,确保了系统的高可用性和数据的一致性。本文将深入解析Replica Set的工作原理及其在实际应用中的配置和优化方法,帮助读者更好地理解和实施MongoDB的高可用架构。 ... [详细]
  • 深入解析JavaScript中的函数防抖与节流技术及其应用场景
    本文深入探讨了JavaScript中函数防抖和节流技术的原理及应用场景。通过详细的示例代码,全面解析了这两种优化方法在实际开发中的重要作用,为开发者提供了宝贵的参考和实践指导。 ... [详细]
  • PyTorch 使用问题:解决导入 torch 后 torch.cuda.is_available() 返回 False 的方法
    在配置 PyTorch 时,遇到 `torch.cuda.is_available()` 返回 `False` 的问题。本文总结了多种解决方案,并分享了个人在 PyCharm、Python 和 Anaconda3 环境下成功配置 CUDA 的经验,以帮助读者避免常见错误并顺利使用 GPU 加速。 ... [详细]
  • 在 Windows 10 系统下配置 Python 3 和 OpenCV 3 的环境时,建议使用 Anaconda 分发版以简化安装过程。Anaconda 可以从其官方网站(https://www.anaconda.com/download)下载。此外,本文还推荐了几本关于 Python 和 OpenCV 的专业书籍,帮助读者深入理解和应用相关技术。 ... [详细]
  • 深入浅出:前端开发中的JavaScript基础入门
    JavaScript,作为前端开发的核心技术之一,与HTML和CSS并称为Web开发的三大基石。尽管其名称与Java相似,但实际上两者并无直接关联,JavaScript是一门独立的编程语言,与Python、Go和C++等语言一样具有独特的语法和特性。本文将从基础入手,详细介绍JavaScript的基本概念、语法结构及其在现代Web开发中的应用。 ... [详细]
  • jQuery Flot 数据可视化插件:高效绘制图表的专业工具
    jQuery Flot 是一款高效的数据可视化插件,专为绘制各种图表而设计。该工具支持丰富的图表类型和自定义选项,适用于多种应用场景。用户可以通过其官方网站获取示例代码和下载资源,以便快速上手和使用。 ... [详细]
  • 本文深入探讨了IO复用技术的原理与实现,重点分析了其在解决C10K问题中的关键作用。IO复用技术允许单个进程同时管理多个IO对象,如文件、套接字和管道等,通过系统调用如`select`、`poll`和`epoll`,高效地处理大量并发连接。文章详细介绍了这些技术的工作机制,并结合实际案例,展示了它们在高并发场景下的应用效果。 ... [详细]
  • 本文深入探讨了NDK与JNI技术在实际项目中的应用及其学习路径。通过分析工程目录结构和关键代码示例,详细介绍了如何在Android开发中高效利用NDK和JNI,实现高性能计算和跨平台功能。同时,文章还提供了从基础概念到高级实践的系统学习指南,帮助开发者快速掌握这些关键技术。 ... [详细]
  • HTML5大文件传输技术深度解析与实践分享
    本文深入探讨了HTML5在Web前端开发中实现大文件上传的技术细节与实践方法。通过实例分析,详细讲解了如何利用HTML5的相关特性高效、稳定地处理大文件传输问题,并提供了可供参考的代码示例和解决方案。此外,文章还讨论了常见的技术挑战及优化策略,旨在帮助开发者更好地理解和应用HTML5大文件上传技术。 ... [详细]
author-avatar
阳光美女新干线-
这个家伙很懒,什么也没留下!
Tags | 热门标签
RankList | 热门文章
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有