首页人工智能3.多维数组的运算

3.多维数组的运算

掌握了Numpy多维数组的运算,才可以高效地实现神经网络。

1.多维数组:

  • Numpy生成一维数组:
import numpy as np
a = np.array([1,2,3,4])
print(a)
print(np.ndim(a))
print(a.shape)
print(a.shape[0])

输出结果为:

array([1, 2, 3, 4])
1
(4,)
4

数组的维度可以通过np.ndim()方法获得。
数组的形状可以通过np.shape方法获得,返回一个元祖(tuple)。

  • Numpy生成二维数组:
b = np.array([[1,2],[3,4],[5,6]])
print(b)
print(np.ndim(b))
print(b.shape)

输出结果为:

array([[1, 2],
       [3, 4],
       [5, 6]])
2
(3, 2)

二维数组也称作矩阵(matrix)
其中数组的横向排列叫做行(row),纵向排列叫做列(column)

2.矩阵乘法:

矩阵的乘法是通过左边矩阵的行(横向)和右边矩阵的列(纵向)以对应元素的方式相乘后再求和得到的,运算得到的结果为一个新的多维数据。

在Python中实现方式为:

a = np.array([[1,2],[3,4]])
print(a)

b = np.array([[5,6],[7,8]])
print(b)

print(np.dot(a,b))

print(np.dot(b,a))

输出结果为:

array([[1, 2],
       [3, 4]])
array([[5, 6],
       [7, 8]])
array([[19, 22],
       [43, 50]])
array([[23, 34],
       [31, 46]])

这里需要注意的是np.dot(a,b)np.dot(b,a)的结果可能不一样。

在看一下其他数组的运算结果。

  • 2*3的矩阵a和3*2的矩阵b的乘积:
a = np.array([[1,2,3],[4,5,6]])
print(a)

print(a.shape)


b = np.array([[1,2],[3,4],[5,6]])
print(b)

print(b.shape)

输出结果为:

array([[1, 2, 3],
       [4, 5, 6]])
(2, 3)
array([[1, 2],
       [3, 4],
       [5, 6]])
(3, 2)
array([[22, 28],
       [49, 64]])
  • 2*3的矩阵a和2*2的矩阵b的乘积:
a = np.array([[1,2,3],[4,5,6]])
print(a)
print(a.shape)


b = np.array([[1,2],[3,4]])
print(b)
print(b.shape)


print(np.dot(a,b))

输出结果为:

array([[1, 2, 3],
       [4, 5, 6]])
(2, 3)
array([[1, 2],
       [3, 4]])
(2, 2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: shapes (2,3) and (2,2) not aligned: 3 (dim 1) != 2 (dim 0)

可以发现这时会报错,提示维度不一致,即a矩阵第1维和b矩阵第2维的元素个数不一致。

因此在矩阵乘积运算中,对应维度的元素个数只有保持一致才能进行运算。

RELATED ARTICLES

欢迎留下您的宝贵建议

Please enter your comment!
Please enter your name here

- Advertisment -

Most Popular

Recent Comments