Pyhon 中分辨numpy产生的数据的维度

Python中是用numpy产生的数组和数学上的矩阵不太一样,初次接触numpy,把如何分辨python产生的数组做一个小结,以便后续学习。

python中产生数组可以是用module : numpy

import numpy as np

下面产生一个随机多维数组:randint的参数分别表示:

10:int 类型,表示产生的随机数最大不超过10

size=****,表示的是要产生的数组形式,这里表示产生一个3*4*5*6的数组。参数也可以是1*2,2*3等等,表示产生一个1*2的一维数组,和2*3的二维数组。

a = np.random.randint(10, size=(3, 4, 5, 6))

输出为:

[[[[3 9 7 4 4 8]         #--a[0]start   #--a[0][0]start
   [7 7 7 3 6 5]
   [6 2 7 3 5 7]
   [3 4 6 7 7 3]
   [7 1 5 9 9 6]]                       #--a[0][0]end

  [[9 7 9 9 6 2]                        #--a[0][1]start
   [5 2 4 8 9 9]
   [6 0 6 8 5 8]
   [1 8 6 6 3 1]
   [1 0 2 6 6 1]]                       #--a[0][1]end

  [[5 0 2 1 3 9]                        #--a[0][2]start
   [8 4 2 9 5 9]
   [2 9 4 2 4 6]
   [2 6 7 7 8 4]
   [1 5 0 0 2 8]]                       #--a[0][2]end

  [[0 7 5 6 4 5]                        #--a[0][3]start
   [7 1 2 8 4 6]
   [8 1 5 4 3 9]
   [1 0 4 4 9 1]
   [7 6 3 8 3 6]]]      #--a[0]end      #--a[0][3]end


 [[[8 6 9 6 1 7]        #---------a[1]start
   [7 9 0 2 0 8]
   [5 5 4 1 3 9]
   [7 2 4 2 3 1]
   [1 0 3 4 6 7]]

  [[2 7 6 7 8 3]
   [4 9 0 7 0 0]
   [0 3 0 0 5 5]
   [0 2 7 2 0 4]
   [8 8 9 6 2 6]]

  [[3 4 1 1 3 8]
   [7 0 9 3 4 6]
   [6 9 0 2 7 7]
   [9 5 2 2 1 1]
   [9 6 5 0 4 3]]

  [[8 7 4 7 5 9]
   [0 7 0 8 0 8]
   [7 9 3 3 6 6]
   [3 8 9 4 0 8]
   [0 7 1 4 4 8]]]       #---------a[1]end


 [[[7 6 6 9 2 1]         #---------a[2]start
   [9 0 1 6 6 6]
   [6 6 4 6 4 3]
   [6 8 7 5 3 1]
   [6 7 8 2 5 2]]

  [[6 8 2 3 8 6]
   [8 3 1 3 5 3]
   [6 8 8 8 0 6]
   [2 5 5 7 5 3]
   [0 3 5 7 6 4]]

  [[1 2 0 4 9 4]
   [1 7 2 5 5 6]
   [3 9 3 7 7 9]
   [2 2 0 0 2 4]
   [3 7 4 6 5 8]]

  [[1 9 2 1 4 7]
   [5 2 8 2 2 2]
   [0 3 3 4 7 6]
   [6 7 2 7 0 5]
   [7 0 8 0 7 2]]]]     #---------a[2]end     #----a[2][3][4]

一般来讲,假设size中有n个参数,那么数组就是n维数组。查看数组维度和形状的方法分别是:

#维度 np.ndim()
#形状 np.shape()

    print("dim:" + str(np.ndim(a)))
    print("shape:" + str(np.shape(a)))

输出:

dim:4
shape:(3, 4, 5, 6)

下面分别查看数组成员,可以看到a[0]是以3个中括号结尾的第一个数组,是一个4*5*6的数组。由于产生的是3*4*5*6的数组,所以a[x]中的最大值x只能取到2(可取0,1,2)

 print("a[0]:"+str(a[0]))

#输出

a[0]:
[[[3 9 7 4 4 8]
  [7 7 7 3 6 5]
  [6 2 7 3 5 7]
  [3 4 6 7 7 3]
  [7 1 5 9 9 6]]

 [[9 7 9 9 6 2]
  [5 2 4 8 9 9]
  [6 0 6 8 5 8]
  [1 8 6 6 3 1]
  [1 0 2 6 6 1]]

 [[5 0 2 1 3 9]
  [8 4 2 9 5 9]
  [2 9 4 2 4 6]
  [2 6 7 7 8 4]
  [1 5 0 0 2 8]]

 [[0 7 5 6 4 5]
  [7 1 2 8 4 6]
  [8 1 5 4 3 9]
  [1 0 4 4 9 1]
  [7 6 3 8 3 6]]]

最外层的数组看完了,进一步看第二层的数组,这是一个5*6的二维数组,

  print("a[0][0]:"+str(a[0][0]))
#输出:

a[0][0]:
[[3 9 7 4 4 8]
 [7 7 7 3 6 5]
 [6 2 7 3 5 7]
 [3 4 6 7 7 3]
 [7 1 5 9 9 6]]

最大可以取到a[2][3]:

print("a[2][3]:" + str(a[2][3]))

#输出:
a[2][3]:
[[1 9 2 1 4 7]
 [5 2 8 2 2 2]
 [0 3 3 4 7 6]
 [6 7 2 7 0 5]
 [7 0 8 0 7 2]]

下面输出第三层数组,最大可取到:a[2][3][4]

print("a[2][3][4]:" + str(a[2][3][4]))
#输出: 
a[2][3][4]:[7 0 8 0 7 2]

最后一层数组: ,最大可取到a[2][3][4][5]

可以看到size中的每一个参数都表示对应层的可取的元素下标。size(3,4,5,6)中能够取到的元素下标为a(2,3,4,5)

你可能感兴趣的:(numpy,python,机器学习)