之前没有系统看过这本书,现在准备在blog上写笔记,记录一些以前没注意的或是觉得重要的,略去一些已知的
Chapter4 Numpy basics
Numpy 特性
- 内部存储在连续的blocks内存中,算法library用C写成,比原生类型使用更少内存
- 可进行复杂计算而不用loop
tips:
data.dtype 查看内部元素类型 ,dtype可以进行设置
dtype转换:arr.astype()甚至可以string到float
np.zeros_like, one_like生成和输入一个大小
Indexing
1. numpy支持bool索引
2. Fancy Indexing
确实很fancy了
Transporting arrays
转置 arr.T
矩阵乘 np.dot(x,y) 或者x.dot(y)
arr.transpose
arr.swapaxes
Fast Element-Wise ArrayFunctions
np.maximum(x, y) 返回每个元素是两个array对应元素最大值的array
***np.meshgrid(x,y) 将输入的一维x,y 扩展开,用于乘方,挺有用的
Expressing Conditional Logic as Array Operations
In [165]: xarr = np.array([1.1, 1.2, 1.3, 1.4, 1.5])
In [166]: yarr = np.array([2.1, 2.2, 2.3, 2.4, 2.5])
In [167]: cond = np.array([True, False, True, True, False])
In [170]: result = np.where(cond, xarr, yarr) 这个where很有用啊
In [171]: result
Out[171]: array([ 1.1, 2.2, 1.3, 1.4, 2.5])
np.where(a,b,c)
a:bool array若true为a,否则b
Bool array可以用sum()求和 true为1,false为0
Linear Algebra
numpy.linalg
numpy.linalg是一个用于矩阵分解,逆矩阵,行列式等
from numpy.linalg import inv, qr
Pseudorandom Number Generation
argmax(), which returns the first index of the maximum value in the boolean array (True is the maximum value)