热门标签 | 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

推荐阅读
  • 基于Node.js的高性能实时消息推送系统通过集成Socket.IO和Express框架,实现了高效的高并发消息转发功能。该系统能够支持大量用户同时在线,并确保消息的实时性和可靠性,适用于需要即时通信的应用场景。 ... [详细]
  • 如何将PHP文件上传至服务器及正确配置服务器地址 ... [详细]
  • Python学习:环境配置与安装指南
    Python作为一种跨平台的编程语言,适用于Windows、Linux和macOS等多种操作系统。为了确保本地已成功安装Python,用户可以通过终端或命令行界面输入`python`或`python3`命令进行验证。此外,建议使用虚拟环境管理工具如`venv`或`conda`,以便更好地隔离不同项目依赖,提高开发效率。 ... [详细]
  • JVM参数设置与命令行工具详解
    JVM参数配置与命令行工具的深入解析旨在优化系统性能,通过合理设置JVM参数,确保在高吞吐量的前提下,有效减少垃圾回收(GC)的频率,进而降低系统停顿时间,提升服务的稳定性和响应速度。此外,本文还将详细介绍常用的JVM命令行工具,帮助开发者更好地监控和调优JVM运行状态。 ... [详细]
  • Python 数据分析领域不仅拥有高质量的开发环境,还提供了众多功能强大的第三方库。本文将介绍六个关键步骤,帮助读者掌握 Python 数据分析的核心技能,并深入探讨六款虽不广为人知但却极具潜力的数据处理库,如 Pandas 的替代品和新兴的可视化工具,助力数据科学家和分析师提升工作效率。 ... [详细]
  • 在 Windows 10 系统下配置 Python 3 和 OpenCV 3 的环境时,建议使用 Anaconda 分发版以简化安装过程。Anaconda 可以从其官方网站(https://www.anaconda.com/download)下载。此外,本文还推荐了几本关于 Python 和 OpenCV 的专业书籍,帮助读者深入理解和应用相关技术。 ... [详细]
  • 如何在Oracle ASM_Diskgroup中重命名现有磁盘
    如何在Oracle ASM_Diskgroup中重命名现有磁盘 ... [详细]
  • 本项目在Java Maven框架下,利用POI库实现了Excel数据的高效导入与导出功能。通过优化数据处理流程,提升了数据操作的性能和稳定性。项目已发布至GitHub,当前最新版本为0.0.5。该项目不仅适用于小型应用,也可扩展用于大型企业级系统,提供了灵活的数据管理解决方案。GitHub地址:https://github.com/83945105/holygrail,Maven坐标:`com.github.83945105:holygrail:0.0.5`。 ... [详细]
  • 从无到有,构建个人专属的操作系统解决方案
    操作系统(OS)被誉为程序员的三大浪漫之一,常被比喻为计算机的灵魂、大脑、内核和基石,其重要性不言而喻。本文将详细介绍如何从零开始构建个人专属的操作系统解决方案,涵盖从需求分析到系统设计、开发与测试的全过程,帮助读者深入理解操作系统的本质与实现方法。 ... [详细]
  • 在Linux系统中,目录结构遵循文件系统层次标准(FHS),确保了系统的组织性和可维护性。其中,`/bin`目录是FHS要求必须存在的目录之一,主要存放了在单用户维护模式下仍可执行的基本命令和工具。这些命令不仅对root用户可用,普通用户也能使用,以确保系统在最小化运行状态下仍能进行基本的操作和管理。 ... [详细]
  • 本题库精选了Java核心知识点的练习题,旨在帮助学习者巩固和检验对Java理论基础的掌握。其中,选择题部分涵盖了访问控制权限等关键概念,例如,Java语言中仅允许子类或同一包内的类访问的访问权限为protected。此外,题库还包括其他重要知识点,如异常处理、多线程、集合框架等,全面覆盖Java编程的核心内容。 ... [详细]
  • Python网络爬虫入门:利用urllib库进行数据抓取
    Python网络爬虫入门:利用urllib库进行数据抓取在数据科学和Web开发领域,Python凭借其简洁高效的特性成为首选语言。本文主要介绍了如何在Windows环境下使用Python的urllib库进行基本的网络数据抓取。考虑到命令行操作的不便,作者选择了Jupyter Notebook作为开发环境,不仅简化了配置过程,还提供了直观的数据处理和可视化功能。通过实例演示,读者可以轻松掌握urllib的基本用法,为深入学习网络爬虫技术打下坚实基础。 ... [详细]
  • 进程(Process)是指计算机中程序对特定数据集的一次运行活动,是系统资源分配与调度的核心单元,构成了操作系统架构的基础。在早期以进程为中心的计算机体系结构中,进程被视为程序的执行实例,其状态和控制信息通过任务描述符(task_struct)进行管理和维护。本文将深入探讨进程的概念及其关键数据结构task_struct,解析其在操作系统中的作用和实现机制。 ... [详细]
  • 全面解析:Hadoop技术栈中的Linux操作系统概览
    全面解析:Hadoop技术栈中的Linux操作系统概览 ... [详细]
  • 宏基因组学经典文献重现(一):利用ggplot2进行散点图可视化分析
    宏基因组学经典文献重现(一):利用ggplot2进行散点图可视化分析 ... [详细]
author-avatar
手机用户2502891303_279
这个家伙很懒,什么也没留下!
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社区 版权所有