numpy.zeros_like
numpy.``zeros_like
(a, dtype=None, order=’K’, subok=True)[source]
Return an array of zeros with the same shape and type as a given array.
mean() 函数定义:
numpy.mean(a, axis, dtype, out,keepdims )
同var(方差)和std(标准差)反应一个数据集的离散程度
mean()函数功能:求取均值
经常操作的参数为axis,以m * n矩阵举例:
- axis 不设置值,对 m*n 个数求均值,返回一个实数
axis = 0:压缩行,对各列求均值,返回 1 * n 矩阵
axis =1 :压缩列,对各行求均值,返回 m *1 矩阵
1 | import numpy as np |
numpy矩阵的传播机制以及numpy常用方法
https://www.jianshu.com/p/e26f381f82ad
https://www.jianshu.com/p/0b2679aaafd3
numpy.array的操作
改变数组维度
已知reshape函数可以有一维数组形成多维数组
ravel函数可以展平数组 b.ravel()
flatten()函数也可以实现同样的功能
区别:ravel只提供视图view,而flatten分配内存存储
注意:以上两种函数不改变原来array的维度,但是可以赋值给新的array
重塑:用元祖设置维度
1 | 4,2,3) b.shape=( |
转置:
1 | b |
数组的组合
比较简单的方法:np.append(a,b,axis=数字)
其中:
没有axis属性:把所有元素展开
axis = 0:添加添加n行
axis = 1:添加n列
口诀:0行1列,适用于所有的numpy函数的axis属性。
1 | import numpy as np |
水平组合
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17a
array([0, 1, 2],
[3, 4, 5],
[6, 7, 8])
2 b = a*
b
array([ 0, 2, 4],
[ 6, 8, 10],
[12, 14, 16])
np.hstack((a,b))
array([ 0, 1, 2, 0, 2, 4],
[ 3, 4, 5, 6, 8, 10],
[ 6, 7, 8, 12, 14, 16])
1) np.concatenate((a,b),axis=
array([ 0, 1, 2, 0, 2, 4],
[ 3, 4, 5, 6, 8, 10],
[ 6, 7, 8, 12, 14, 16])垂直组合
1
2
3
4
5
6
7
8
9
10
11
12
13
14np.vstack((a,b))
array([ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 0, 2, 4],
[ 6, 8, 10],
[12, 14, 16])
0) np.concatenate((a,b),axis=
array([ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 0, 2, 4],
[ 6, 8, 10],
[12, 14, 16])
深度组合:沿着纵轴方向组合
1
2
3
4
5
6
7
8
9
10
11
12np.dstack((a,b))
array([[ 0, 0],
[ 1, 2],
[ 2, 4],
[ 3, 6],
[ 4, 8],
[ 5, 10],
[ 6, 12],
[ 7, 14],
[ 8, 16]])
数组的比较
ab
array([ True, False, False],
[False, False, False],
[False, False, False], dtype=bool)
#True那个因为都是0啊
数组的分割
1 | a |
水平分割(难道不是垂直分割???)
>>> np.hsplit(a,3) 按列切割,返回3列的array的list [ [array1] [array2] [array3] ]split(a,3,axis=1)同理达到目的
垂直分割
>>> np.vsplit(a,3)
[array([0, 1, 2]), array([3, 4, 5]), array([6, 7, 8])]split(a,3,axis=0)同理达到目的
深度分割
某三维数组:::1
2
3
4
5
6
7
8
9
10
11
12
13\>>> d = np.arange(27).reshape(3,3,3)
\>>> d
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11],
[12, 13, 14],
[15, 16, 17],
[18, 19, 20],
[21, 22, 23],
[24, 25, 26]])
深度分割后(即按照深度的方向分割)
注意:dsplite只对3维以上数组起作用
raise ValueError(‘dsplit only works on arrays of 3 or more dimensions’)
ValueError: dsplit only works on arrays of 3 or more dimensions
1 | np.dsplit(d,3) |
数组的属性
>>> a.shape #数组维度
(3, 3)
>>> a.dtype #元素类型
dtype(‘int32’)
>>> a.size #数组元素个数
9
>>> a.itemsize #元素占用字节数
4
>>> a.nbytes #整个数组占用存储空间=itemsize*size
36
>>> a.T #转置=transpose
array([0, 3, 6],
[1, 4, 7],
[2, 5, 8])