![fc7f734ac91c3c0b756bc84107adfd6d.png](https://i-blog.csdnimg.cn/blog_migrate/9a42ed7351f682bfeecfa77fc68ef149.jpeg)
一、数据维度
维度(scalar),张量(Tensor)。3表示零维张量,[1 2 3]表示一维张量,矩阵表示二维张量,任何大于二维张量就叫张量(Tensor)。如下图所示:
![5dfc717371f4597b6e2ca08c2e1ea9a3.png](https://i-blog.csdnimg.cn/blog_migrate/5cea649ec1874db001147cad56c92660.jpeg)
二、Numpy简介
2.1、NumPy 中处理数字的常见方式是通过 ndarray 对象。它们与 Python 列表相似,但是可以有任意数量的维度。而且,ndarray 支持快速的数学运算,这正是我们想要的。由于它可以存储任意数量的维度,你可以使用 ndarray 来表示我们之前提到的任意数据类型:标量、向量、矩阵或张量。
2.2、NumPy 中的标量 比 Python 中的标量类型更多。不像 Python 只有基本类型 int、float 等,NumPy 可以让你指定有符号和无符号的类型以及不同的大小。因此,除了 Python 的 int,你可以使用 uint8、int8、uint16、int16 等类型。
这些类型很重要,因为你所创建的每个对象(向量、矩阵、张量)最终都会存储标量。而且,当你创建 NumPy 数组时,可以指定类型 - 但是数组中的每一项必须具有相同的类型。在这方面,NumPy 数组更像是 C 数组,而非 Python 列表。
如果要创建一个包含标量的 NumPy 数组,方法是将值传递给 NumPy 的 array 函数,如下所示:
s=np.array(5)
不过你仍然可以在 ndarray、NumPy 标量和普通的 Python 标量之间执行数学运算。
2.3、张量与向量和矩阵一样,但张量可以有更多的维度。例如,要创建一个 3x3x2x1 的张量,你可以这样做:
t = np.array([[[[1],[2]],[[3],[4]],[[5],[6]]],[[[7],[8]],
[[9],[10]],[[11],[12]]],[[[13],[14]],[[15],[16]],[[17],[17]]]]),而 t.shape 会返回 (3, 3, 2, 1)。
你可以像在矩阵中一样访问其中的项目,但需要使用更多的索引。所以 t[2][1][1][0] 将返回 16。
三、元素级矩阵运算
跟标量计算一样,如下图:
![5dfc717371f4597b6e2ca08c2e1ea9a3.png](https://i-blog.csdnimg.cn/blog_migrate/5cea649ec1874db001147cad56c92660.jpeg)
Numpy运算:相加时
import numpy as np
values=[1,2,3,4,5]
values=np.array(values)+5
# 现在 values 是包含 [6,7,8,9,10] 的一个 ndarray