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)