目录
  1. 1. numpy.zeros_like
  2. 2. mean() 函数定义:
  3. 3. numpy矩阵的传播机制以及numpy常用方法
  4. 4. numpy.array的操作
    1. 4.1. 改变数组维度
    2. 4.2. 重塑:用元祖设置维度
    3. 4.3. 转置:
    4. 4.4. 数组的组合
      1. 4.4.1. 比较简单的方法:np.append(a,b,axis=数字)
      2. 4.4.2. 水平组合
      3. 4.4.3. 垂直组合
      4. 4.4.4. 深度组合:沿着纵轴方向组合
      5. 4.4.5. 列组合column_stack()
      6. 4.4.6. 行组合row_stack()
    5. 4.5. 数组的比较
    6. 4.6. 数组的分割
    7. 4.7. 数组的属性
numpy.array的常用方法

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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
>>> import numpy as np
>>> num1 = np.array([[1,2,3],[2,3,4],[3,4,5],[4,5,6]])
>>> num1
array([[1, 2, 3],
[2, 3, 4],
[3, 4, 5],
[4, 5, 6]])
>>> num2 = np.mat(num1)
>>> num2
matrix([[1, 2, 3],
[2, 3, 4],
[3, 4, 5],
[4, 5, 6]])
>>> np.mean(num2) # 对所有元素求均值
3.5
>>> np.mean(num2,0) # 压缩行,对各列求均值
matrix([[ 2.5, 3.5, 4.5]])
>>> np.mean(num2,1) # 压缩列,对各行求均值
matrix([[ 2.],
[ 3.],
[ 4.],
[ 5.]])

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
2
3
4
5
6
7
8
9
10
11
12
13
>>> b.shape=(4,2,3)
>>> b
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]])

转置:

1
2
3
4
5
6
>>> b
array([0, 1],
[2, 3])
>>> b.transpose()
array([0, 2],
[1, 3])

数组的组合

比较简单的方法:np.append(a,b,axis=数字)

其中:

没有axis属性:把所有元素展开
axis = 0:添加添加n行
axis = 1:添加n列
口诀:0行1列,适用于所有的numpy函数的axis属性。

1
2
3
4
5
6
7
8
9
10
11
12
import numpy as np
aa = np.array([[1,2,3],[4,5,6]])
a = np.array([[4,2,3],[4,5,6]])

c = np.append(aa,a,axis=0)
print (c)

output:
[[1 2 3]
[4 5 6]
[4 2 3]
[4 5 6]]
  1. 水平组合

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    >>> a
    array([0, 1, 2],
    [3, 4, 5],
    [6, 7, 8])
    >>> b = a*2
    >>> 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])
    >>> np.concatenate((a,b),axis=1)
    array([ 0, 1, 2, 0, 2, 4],
    [ 3, 4, 5, 6, 8, 10],
    [ 6, 7, 8, 12, 14, 16])
  2. 垂直组合

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    >>> np.vstack((a,b))
    array([ 0, 1, 2],
    [ 3, 4, 5],
    [ 6, 7, 8],
    [ 0, 2, 4],
    [ 6, 8, 10],
    [12, 14, 16])
    >>> np.concatenate((a,b),axis=0)
    array([ 0, 1, 2],
    [ 3, 4, 5],
    [ 6, 7, 8],
    [ 0, 2, 4],
    [ 6, 8, 10],
    [12, 14, 16])
  1. 深度组合:沿着纵轴方向组合

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    >>> np.dstack((a,b))
    array([[ 0, 0],
    [ 1, 2],
    [ 2, 4],

    3, 6],
    [ 4, 8],
    [ 5, 10],

    6, 12],
    [ 7, 14],
    [ 8, 16]])
  1. 列组合column_stack()

    一维数组:按列方向组合
    二维数组:同hstack一样

  2. 行组合row_stack()

    以为数组:按行方向组合
    二维数组:和vstack一样

数组的比较

ab
array([ True, False, False],
[False, False, False],
[False, False, False], dtype=bool)
#True那个因为都是0啊

数组的分割

1
2
3
4
5
6
7
8
9
>>> a
array([0, 1, 2],
[3, 4, 5],
[6, 7, 8])
>>> b = a*2
>>> b
array([ 0, 2, 4],
[ 6, 8, 10],
[12, 14, 16])
  1. 水平分割(难道不是垂直分割???)
    >>> np.hsplit(a,3) 按列切割,返回3列的array的list [ [array1] [array2] [array3] ]

    split(a,3,axis=1)同理达到目的

  2. 垂直分割
    >>> np.vsplit(a,3)
    [array([0, 1, 2]), array([3, 4, 5]), array([6, 7, 8])]

    split(a,3,axis=0)同理达到目的

  3. 深度分割
    某三维数组:::

    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
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
27
28
29
30
31
32
np.dsplit(d,3)
[array([[ 0],
[ 3],
[ 6],

​ [ 9],
​ [12],
​ [15],

​ [18],
​ [21],
​ [24]]), array([[ 1],
​ [ 4],
​ [ 7],

​ [10],
​ [13],
​ [16],

​ [19],
​ [22],
​ [25]]), array([[ 2],
​ [ 5],
​ [ 8],

​ [11],
​ [14],
​ [17],

​ [20],
​ [23],
​ [26]])]

数组的属性

>>> 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])

文章作者: HazardFY
文章链接: http://hazardfy.github.io/2019/11/16/numpy-array的常用方法/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 HazardFY's BLOG
打赏
  • 微信
  • 支付寶