一、numpy数组

使用numpy创建的数组叫做ndarray,是一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组。接下来我们来创建几个数组:
1、一维数组

import numpy as np
##一行一列
a = np.array([1])
##一行两列
c = np.array([1,2])

2、二维数组

##两行一列
b = np.array([[1], [1]])
##两行两列
d = np.array([[1, 2], [1, 2]])

3、三维数组

##形状为1X2X2
e = np.array([[[1, 2], [1, 2]]])
##形状为1X3X2
f = np.array([[[1, 2], [1, 2], [1, 2]]])

在此举这么多重复的例子主要是为了帮助大家理解数组维度的对应关系,也方便我们通过索引来寻找指定的元素。例如,f[0, 1, 1] = 2

二、数组的乘法

一般涉及二维数组(即矩阵),二维数组的乘法需要满足一个条件,那就是第一个数组的列数要和第二个数组的行数相等,具体的数学计算方法大家可以上网搜一下。在python里进行这个操作我们一般使用np.dot()。

##矩阵的乘法,前一个矩阵的列数等于下一个矩阵的行数,生成的矩阵行数和第一个的相同,列数和第二个的相同
m = np.array([[1, 2, 3], [4, 5, 6]])       ##2X3
n = np.array([[1, 2], [3, 4], [5, 6]])     ##3X2
p = np.dot(m, n)
q = np.matmul(m, n)
##p和q相同

三、数组的元素乘法

使用np.multiply函数或者乘号(*)

a = np.zeros((2,2,2))
a[:,:,0]=([[3,6],[5,8]])
a[:,:,1]=([[2,5],[7,2]])
b = np.zeros((2,2,2))
b[:,:,0]=([[3,2],[9,6]])
b[:,:,1]=([[7,8],[1,0]])
c = a*b
d = np.multiply(a, b)
print(np.all(c == d))
##输出为True

看到这里,大家可能觉得进行点乘操作的两个矩阵的形状要相同,但是事实上做点乘的两个矩阵的形状不一定要相同。

x = np.array([[1], [2]])          #2X1
y = np.array([[[1, 1], [2, 4]]])  #1X2X2
z = x * y                         #1X2X2

最后,如果我们想把数组的每个元素进行平方,可以进行如下两种操作:

e = np.array([1, 2, 3, 4, 5, 6])
f = e ** 2
g = e * e
print(np.all(f == g))
##输出为True
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐