NumPy数组

一维数组的切片与索引

1.一维Numpy数组和python列表切片一样

>>> numpy.arange(9)
array([0, 1, 2, 3, 4, 5, 6, 7, 8])

可以用下标选择元素,下标范围从0到7,并且每次递增2

array[0:7:2]
array[0,2,4,6]

也可以用负数下标来反转数组:

array[::-1]

数组的转换

1.构造多维数组

>>> b = numpy.arange(24).reshape(2,3,4)#
>>> 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]]])

2.多维数组转一维数组拆解函数 brvel():

>>> b.ravel()
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])

3.多维数组转一维数组拉直函数 flatten():

flatten函数与brvel的功能是一样的只不过flatten返回的是一个真实的数组。而brvel返回的是数组的视图。

4.用元组指定数组形状

b.shape = (6,4)     #指定数组的形状为6行4列

5.矩阵的转置函数 transpose():

b.transpose()       #实现矩阵行变列,列变行

6.调整大小,同reshape()函数功能相同,只不过函数resize()会改变所作用的数组


矩阵的合并

1.水平合并函数 hstack((a,b)) 和 concatenate((a,b),axis = 1)

import numpy as np
>>> a = np.arange(9).reshape(3,3)
>>> 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]])

垂直合并函数vStack((a,b)) 和 concatenate((a,b),axis = 0)

>>> 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)  #同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. 2. 数组的转换
  3. 3. 矩阵的合并
|