【脚本语言系列】关于Python数值计算NumPy, 你需要知道的事

如何使用NumPy?

创建ndarray
  • 直接创建
    • 数组,其元素为0~100

      import numpy as np
      arr = np.arange(100)
    • 数组,其元素均为0

      import numpy as np
      arr = np.arange(100)
    • 数组,其元素为0~1之间的100等分

      import numpy as np
      arr = np.linspace(0, 1, 100)
    • 数组,其元素为0~1之间的100等份以10为底的对数

      import numpy as np
      arr = np.logspace(0, 1, 100, base = 10.0)
    • 数组,尺寸5*5,其元素为0

      import numpy as np
      image = np.zeros((5, 5))
    • 数组,尺寸5*5*5,其元素为1(整型)

      import numpy as np
      cube = np.zeros((5, 5, 5)).astype(int) + 1
    • 数组,尺寸5*5*5,其元素为1(浮点型)

      import numpy as np
      cube = np.ones((5, 5, 5)).astype(np.float16)
创建recarrays
  • 直接创建
    • 记录列表

      import numpy as np
      recarr = np.zeros((2,), dtype=(‘i4,f4,a10’))
      toadd = [(1,2.,’Hello’),(2,3.,”World”)]
      recarr[:] = toadd
  • 转化创建
    • 记录列表

      import numpy as np
      recarr = np.zeros((2,), dtype = (‘i4, f4, a10’))
      col1 = np.arange(2)+1
      col2 = np.arange(2, dtype = np.float32)
      col3 = [‘Hello’, ‘World’]
      toadd = zip(col1, col2, col3)
      recarr[:] = toadd
操纵ndarray
  • 索引
    • 获取元素

      import numpy as np
      alist = [[1,2], [3,4]]
      arr = np.array(alist)
      arr[0, 1] # the (1,2) Element
    • 获取列

      import numpy as np
      alist = [[1,2], [3,4]]
      arr = np.array(alist)
      arr[1, :] # the 2nd Row
    • 获取行

      import numpy as np
      alist = [[1,2], [3,4]]
      arr = np.array(alist)
      arr[: , 1] # the 2nd Col

      • 切片
    • 获取元素

      import numpy as np
      arr = np.arange(5)
      index = np.where(arr>1)
      new_arr = arr[index]
    • 获取元素

      import numpy as np
      arr = np.arange(5)
      index = arr>1
      new_arr = arr[index]
    • 删除元素

      import numpy as np
      arr = np.arange(5)
      index = np.where(arr>1)
      new_arr = np.delete(arr, index)
  • 读写
    • 写文本文件

      import numpy as np
      arr = np.loadtxt(‘somefile.txt’)
      np.savetxt(‘somenewfile.txt’)
    • 读文本文件

      import numpy as np
      table = np.loadtxt(‘example.txt’,
      dtype=’names’: (‘ID’, ‘Result’, ‘Type’),
      ‘formats’: (‘S4’, ‘f4’, ‘i2’))
    • 写二进制文件

      import numpy as np
      data = np.empty((1000, 1000))
      np.save(‘test.npy’, data)
    • 写二进制文件

      import numpy as np
      data = np.empty((1000, 1000))
      np.savez(‘test.npz’, data)
    • 读二进制文件

      import numpy as np
      newdata = np.load(‘test.npy’)
    • 读二进制文件

      import numpy as np
      newdata = np.load(‘test.npz’)
数学运算
  • 线性代数
    • 线性方程组求解
      314111513xyz=1139


      import numpy as np
      a = np.array([[3, 1, -5],
      [1, -1, 1],
      [4, 1, 3]])
      b = np.array([12, -2, 10])
      x = np.linalg.inv(a).dot(b)

NumPy是什么?

NumPy是专用于科学计算的基础Python宏包。
它增加了n维数组的能力、单元化的运算(广播)、如线性代数等等的核心数学运算、并且能够使用C/C++和Fortran代码。

为什么用NumPy?

Python存储数据的数据类型list和dict。Python list对象可以存储任何类型的Python对象作为元素。但是,只能通过循环迭代对list中元素进行操作,导致在Python中计算效率低。
为了帮助用户克服以上缺陷,NumPy提供了一种数据存储对象叫做ndarray。与list类似,但比起在同一个list中存储不同数据类型的高度灵活做法,ndarray中采用了每一列中的元素数据类型都是相同的方式。比方说,对于一个Python list,第一个list元素是列表,第二个list元素是列表和字典。对于一个Numpy 数组,只有同一数据类型的元素能够存储其中。

何时不用NumPy?

由于NumPy是使用C语言编写而成的且被视为“不安全”代码,所以不能使用NumPy制作Google App Engine应用程序;
同样,由于大部分NumPy模块是使用C语言编写而成的,所以Java也调用不了NumPy的大部分模块。

SciPy and NumPy by Eli Bressert;
Copyright © 2013 Eli Bressert.
NumPy 1.5 Beginner’s Guide by Ivan Idris;
Copyright © 2011 Packt Publishing.
NumPy Beginner’s Guide Second Edition by Ivan Idris;
Copyright © 2013 Packt Publishing.
NumPy Beginner’s Guide Third Edition by Ivan Idris;
Copyright © 2015 Packt Publishing.
NumPy Cookbook by Ivan Idris
Copyright © 2012 Packt Publishing.
NumPy Cookbook Second Edition by Ivan Idris
Copyright © 2015 Packt Publishing
Learning NumPy Array by Ivan Idris;
Copyright © 2014 Packt Publishing.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值