如何使用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)
- 数组,其元素为0~100
创建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’)
- 写文本文件
数学运算
- 线性代数
- 线性方程组求解
3141−11−513xyz=11−39
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.