简介

  • NumPy(Numerical Python简称) 是高性能科学计算和数据分析的基础包

为什么使用?

  • 标准安装的Python中用列表(list)保存一组值,可以用来当作数组使用,不过由于列表的元素可以是任何对象,因此列表中所保存的是对象的指针。这样为了保存一个简单的[1,2,3],需要有3个指针和三个整数对象。对于数值运算来说这种结构显然比较浪费内存和CPU计算时间。
  • 此外Python还提供了一个array模块,array对象和列表不同,它直接保存数值,和C语言的一维数组比较类似。但是由于它不支持多维,也没有各种运算函数,因此也不适合做数值运算。
  • NumPy的诞生弥补了这些不足,NumPy提供了两种基本的对象:ndarray(N-dimensional array object)和 ufunc(universal function object)。ndarray(下文统一称之为数组)是存储单一数据类型的多维数组,而ufunc则是能够对数组进行处理的函数。

依赖库

本文用以下方式导入NumPy函数库

  • from numpy.random import randn
    import numpy as np

ndarray对象

  • 创建

    • 使用python序列+array函数创建数组
    • >>> arr1 = np.array([6, 7.5, 8, 0, 1])
      >>> arr2 = np.array([[1, 2, 3, 4],[4, 5, 6, 7], [7, 8, 9, 10]])
      >>> arr1
      array([ 6. , 7.5, 8. , 0. , 1. ])
      >>> arr2
      array([[ 1, 2, 3, 4],
      [ 4, 5, 6, 7],
      [ 7, 8, 9, 10]])
    • 通过numpy高效的数组创建函数
      • arange函数:类似于python的range函数,通过指定开始值、终值和步长来创建一维数组,注意数组不包括终值
      • >>> np.arange(0,5,0.5)
        array([ 0. , 0.5, 1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5])
      • zeros函数
      • >>> np.zeros(10)
        array([ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
  • 维度

    • 维度的获取可以使用shape
    • >>> arr1.shape
      (5,)
      >>> arr2.shape
      (3, 4)
    • 数组的维度可以通过设置shape属性

      • 当某个轴的元素为-1时,将根据数组元素的个数自动计算此轴的长度,改变shape的值只是改变每个轴的大小,数组元素在内存中的位置并没有改变
      • >>> arr2.shape = 4,3
        >>> arr2
        array([[ 1, 2, 3],
        [ 4, 4, 5],
        [ 6, 7, 7],
        [ 8, 9, 10]])
        >>> arr2.shape = 2,-1
        >>> arr2
        array([[ 1, 2, 3, 4, 4, 5],
        [ 6, 7, 7, 8, 9, 10]])
      • 使用数组的reshape方法,可以创建一个改变了尺寸的新数组
      • >>> arr2.reshape(3,4)
        array([[ 1, 2, 3, 4],
        [ 4, 5, 6, 7],
        [ 7, 8, 9, 10]])
  • 类型

    • 使用dtype可以获取数组的类型,使用astype可以改变数组的类型
    • >>> arr1 = np.array([1, 2, 3], dtype=np.float64)
      >>> arr2 = np.array([1, 2, 3], dtype=np.int32)
      >>> arr1.dtype
      dtype('float64')
      >>> arr2.dtype
      dtype('int32')
      >>> float_arr = arr2.astype(np.float64)
      >>> float_arr
      array([ 1., 2., 3.])
      >>> float_arr.dtype
      dtype('float64')
  • 数组和标量的运算
  • >>> arr = np.array([[1., 2., 3.], [4., 5., 6.]])
    >>> arr
    array([[ 1., 2., 3.],
    [ 4., 5., 6.]])
    >>> arr * arr
    array([[ 1., 4., 9.],
    [ 16., 25., 36.]])
    >>> arr - arr
    array([[ 0., 0., 0.],
    [ 0., 0., 0.]])
    >>> 1 / arr
    array([[ 1. , 0.5 , 0.33333333],
    [ 0.25 , 0.2 , 0.16666667]])
    >>> arr ** 0.5
    array([[ 1. , 1.41421356, 1.73205081],
    [ 2. , 2.23606798, 2.44948974]])

numpy用法介绍-未完待续的更多相关文章

  1. AutoMapper介绍(未完待续、部分没实现)

    实体间转换工具.其实也可以用Json来实现同名属性.异名属性(用JsonProperty指明)的自动转换 最新版本6.11 需要使用vs2013以上.vs2012下载新版 nuget会遇到问题.只能旧 ...

  2. 我的SQL总结---未完待续

    我的SQL总结---未完待续 版权声明:本文为博主原创文章,未经博主允许不得转载. 总结: 主要的SQL 语句: 数据操作(select, insert, delete, update) 访问控制(g ...

  3. 一篇文章让Oracle程序猿学会MySql【未完待续】

    一篇文章让Oracle DB学会MySql[未完待续] 随笔前言: 本篇文章是针对已经能够熟练使用Oracle数据库的DB所写的快速学会MySql,为什么敢这么说,是因为本人认为Oracle在功能性方 ...

  4. 2017-2-17,c#基础,输入输出,定义变量,变量赋值,int.Parse的基础理解,在本的初学者也能看懂(未完待续)

    计算机是死板的固定的,人是活跃的开放的,初学c#第一天给我的感觉就是:用人活跃开放式的思维去与呆萌的计算机沟通,摸清脾气,有利于双方深入合作,这也是今晚的教训,细心,仔细,大胆 c#基础 1.Hell ...

  5. GitHub 入门不完全指南(未完待续)

    我一直认为 GitHub 是一座宝藏,想让更多人的知道它.加入到这个社区中.本人能力有限,如果文中出现不对的地方,欢迎指正交流. 一.前言 大家好,我是削微寒(xuē wēi hán),一个走在进阶路 ...

  6. 省钱版----查找 IoT 设备TTL线序__未完待续

    作者:仙果 原文来自:省钱版—-查找 IoT 设备TTL线序 省钱版----查找 IoT 设备TTL线序__未完待续 缘由 在IoT固件调试分析的过程中,建议首先在IoT设备的板子上焊接调试线,这是能 ...

  7. Go web编程学习笔记——未完待续

    1. 1).GOPATH设置 先设置自己的GOPATH,可以在本机中运行$PATH进行查看: userdeMacBook-Pro:~ user$ $GOPATH -bash: /Users/user/ ...

  8. Reading | 《数字图像处理原理与实践(MATLAB版)》(未完待续)

    目录 一.前言 1.MATLAB or C++ 2.图像文件 文件头 调色板 像素数据 3.RGB颜色空间 原理 坐标表示 4.MATLAB中的图像文件 图像类型 image()函数 imshow() ...

  9. Hibernate二级缓存(未完待续)

    1.Hibernate的cache介绍: Hibernate实现了良好的Cache机制,可以借助Hibernate内部的Cache迅速提高系统的数据读取性能.Hibernate中的Cache可分为两层 ...

随机推荐

  1. 什么是hive

    Hadoop Hive概念学习系列之什么是Hive? 参考  <Hadoop大数据分析与挖掘实战>的在线电子书阅读                   http://yuedu.baidu ...

  2. [转] Java 命令行交互-JCommander

    [From] https://github.com/Sayi/sayi.github.com/issues/32 我喜欢简单,什么是简单?正如若干字符组成的命令行. 有时候我们用Java开发了一个小工 ...

  3. CSS定位属性

                  定位属性                                                              position属性 1.      s ...

  4. EntityFramework First,FirstOrDefault,Single,SingleOrDefault的区别

    操作符 如果源序列是空的 源序列只包含一个元素 源序列包含多个元素 First 抛异常 返回该元素 返回第一个元素 FirstOrDefault 返回default(TSource) 返回该元素 返回 ...

  5. jsp基础知识总结

    1.了解jsp,jsp有什么有利的,有什么弊端. jsp是serlet的扩展,在web应用中,每个jsp页面都会有servlet容器生产对应的servlet. jsp通过在标准的html页面中插入ja ...

  6. oracle表空间tablespace

    用户:用户是在实例下建立的.不同实例可以建相同名字的用户. 表空间:表空间是一个用来管理数据存储逻辑概念,表空间只是和数据文件(ORA或者DBF文件)发生关系,数据文件是物理的,一个表空间可以包含多个 ...

  7. Go语言包管理工具Glide

      Go语言包管理工具用于管理Go项目的库和库的依赖引用. 包管理工具普遍会在Go项目根目录生成Vendor文件夹并自动下载该Go项目需要的库. Go语言有很多开源的包管理工具,这里主要介绍Glide ...

  8. 【微信小程序】采坑之scroll-view组件

    一.摘要 今天在使用scroll-view组件的时候发现结果跟预想的不一样.其实也不是第一次用了,同样的写法却出现了意料之外的效果,所以认定是bug了.博主使用的是2.3.0版本,所以之前的版本应该也 ...

  9. WPF与Winform中的不同(1)

    1. 部分控件的Text属性,变成了 Content属性 如: winform中,Button.Text = "abc"; wpf中,Button.Content = " ...

  10. SSH连接virtualbox中的虚拟机

    SSH连接virtualbox中的虚拟机 SSH 与 Virtualbox 使用virtualbox创建虚拟机进行工作,可以有效地减少本机环境与工作环境之间的相互影响.但Server虚拟机的界面实在太 ...