本书2017年10月20日出版,英文名为《Python for Data Analysis, 2nd Edition》,英文在线:pydata-book
中文在线:https://www.jianshu.com/p/a380222a3292
本系列读书笔记基本只是简略记下书中要点,引用图片包括大部分来自中文链接博客,少量自己用IPython运行截图;仅作为在遗忘时翻阅之用。
4.1 ndarry / 多维数组对象
主要内容:
%time 和 %timeit
np.random.randn 和 np.random.rand
不建议使用from numpy import *
arr.shape 表示维度大小的元祖
arr.dtype 数组数据类型
np.array(XXX) 创建ndarray对象,单序列→numpy数组,嵌套序列→多维数组
arr.ndim 数组arr维度值
一般np.array会尝试为新建的数组推断出一个合适的数据类型(dtype)
np.zeros(X) np.zeros((X,Y)) 下同 np.ones np.empty
np.empty大多数情况返回的是未初始化的垃圾值,而非全0
np.arange(X)
np.asarray(X)
np.ones_like(X) np.zeros_like(X) np.empty_like(X)
np.full np.full_like
np.eye(X) np.identity(X)
arr.astype(np.float64) 转换dtype 浮点数转换整数小数部分会被截取
astype也可以将数字字符串列表转换为数字列表,如
np.array(['1.25', '-9.6', '42'], dtype=np.string_) → array([ 1.25, -9.6 , 42. ])
维度相等的数组之间的任何算术运算都将应用到元素级
数组与标量运算会将标量值传播到各个元素
维度相等的数组之间的比较大小会生成布尔数组
切片
将一个标量值赋值给一个切片,该值会自动传播到整个选区
数组切片是原始数组的视图,视图上的任何改变都会直接反映到数组上
arr.copy() 创建一份数组arr的副本而非视图
axis = 0 对行处理
高维数组切片
布尔型索引
names = np.array(['Bob', 'Joe', 'Will', 'Bob', 'Will', 'Joe', 'Joe'])
data = np.random.randn(7, 4)
data[names == 'Bob', 2:]
data[~(names == 'Bob')]
and和or在布尔型数组中无效。要使用&与|
data[ (names == 'Bob') | (names == 'Will')]
data[data < 0] = 0 将data中负值设为0
二维数组arr花式索引
arr[[4, 3, 0, 6]]
arr[[-3, -5, -7]]
arr[[1, 5, 7, 2], [0, 3, 1, 2]] 返回一维数组,其中的元素对应各个索引元组
arr[[1, 5, 7, 2]][:, [0, 3, 1, 2]] 返回矩阵子区域
arr[:,[3,1,2]] 返回三列
arr.T
np.dot(arr1, arr2)
高维数组,transpose需要得到一个由轴编号组成的元组才能对这些轴进行转置
arr.reshape(X,Y)
swapaxes方法,它需要接受一对轴编号
下一篇对个别方法和函数做稍微深入一些探究,包括:
待续……