np.mgrid
1 2 3 4 5 6 7 8 9
| >>> x, y = np.mgrid[0:3,0:3] >>> x array([[0, 0, 0], [1, 1, 1], [2, 2, 2]]) >>> y array([[0, 1, 2], [0, 1, 2], [0, 1, 2]])
|
np.meshgrid
1 2 3 4 5 6 7 8 9
| >>> a,b=np.meshgrid(range(3),range(3)) >>> a array([[0, 1, 2], [0, 1, 2], [0, 1, 2]]) >>> b array([[0, 0, 0], [1, 1, 1], [2, 2, 2]])
|
np.ceil()
返回x的值上限 - 不小于x的最小整数
1 2 3
| >>> a = np.array([-1.7, -1.5, -0.2, 0.2, 1.5, 1.7, 2.0]) >>> np.ceil(a) array([-1., -1., -0., 1., 2., 2., 2.])
|
np.ravel() np.flatten()
两者所要实现的功能是一致的(将多维数组降位一维)。
两者的区别在于返回拷贝(copy)还是返回视图(view)
numpy.flatten()返回一份拷贝,对拷贝所做的修改不会影响(reflects)原始矩阵
而numpy.ravel()返回的是视图(view,也颇有几分C/C++引用reference的意味),会影响(reflects)原始矩阵。
1 2 3 4 5 6 7 8
| In [14]: x=np.array([[1,2],[3,4]])
In [15]: x.flatten() Out[15]: array([1, 2, 3, 4])
In [17]: x.ravel() Out[17]: array([1, 2, 3, 4])
|
1 2 3 4 5 6 7 8 9
| >>> x = np.array([[1, 2], [3, 4]]) >>> x.flatten()[1] = 100 >>> x array([[1, 2], [3, 4]]) >>> x.ravel()[1] = 100 >>> x array([[ 1, 100], [ 3, 4]])
|
通过上面的程序可以发现flatten函数返回的是拷贝。
np.stack()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| import numpy as np a=[[1,2,3], [4,5,6]] print("列表a如下:") print(a)
print("增加一维,新维度的下标为0") c=np.stack(a,axis=0) print(c)
print("增加一维,新维度的下标为1") c=np.stack(a,axis=1) print(c)
输出: 列表a如下: [[1, 2, 3], [4, 5, 6]] 增加一维,新维度下标为0 [[1 2 3] [4 5 6]] 增加一维,新维度下标为1 [[1 4] [2 5] [3 6]]
|
np.get_dummies()
一种常用于统计建模或机器学习的转换方式是:将分类变量(categorical variable)转换为“哑变量矩阵”(dummy matrix)或“指标矩阵”(indicator matrix)。如果DataFrame的某一列中含有k个不同的值,则可以派生出一个k列矩阵或DataFrame(其值全为1和0)。pandas有一个get_dummies函数可以实现该功能(其实自己动手做一个也不难)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| In [72]: df = pd.DataFrame({'key': ['b', 'b', 'a', 'c', 'a', 'b'], ....: 'data1': range(6)})
In [73]: pd.get_dummies(df['key']) Out[73]: a b c 0 0 1 0 1 0 1 0 2 1 0 0 3 0 0 1 4 1 0 0 5 0 1 0
[6 rows x 3 columns]
|
np.expand_dims()
numpy.expand_dims(a, axis)
增加一个维度,例如:np.expand_dims(image_data, 0)
可用于增加 batch 的维度
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| >>> x = np.array([1,2]) >>> x.shape (2,)
>>> y = np.expand_dims(x, axis=0) >>> y array([[1, 2]]) >>> y.shape (1, 2)
>>> y = np.expand_dims(x, axis=1) >>> y array([[1], [2]]) >>> y.shape (2, 1)
>>> a.shape (3, 3) >>> np.expand_dims(a,-1).shape (3, 3, 1)
|
np.newaxis
ravel()