1. 张量的创建
import numpy as np
- 标量(0D 张量)
x = np.array(1)
print(x)
print(x.ndim)
1
0
- 向量(1D 张量)
y = np.array([1,2,3])
print(y)
print(y.ndim)
[1 2 3]
1
- 矩阵(2D 张量)
z = np.array([[1,2,3],
[4,5,6],
[7,8,9]])
print(z)
print(z.ndim)
[[1 2 3]
[4 5 6]
[7 8 9]]
2
- 3D 张量
# 三维张量中,每一个元素都是一个二维的矩阵
n_z= np.array([z,z*2,z*3])
print(n_z)
print(n_z.ndim)
[[[ 1 2 3]
[ 4 5 6]
[ 7 8 9]]
[[ 2 4 6]
[ 8 10 12]
[14 16 18]]
[[ 3 6 9]
[12 15 18]
[21 24 27]]]
3
2. 张量的属性
- 张量的形状
z.shape
(3, 3)
注:z.shape可以看做一个一维向量(3,3,3),利用 z.shape[] 遍历张量 z 的行和列,实现循环。
举个栗子:
#将张量array1复制给张量array2
array1 = np.array( [[1,2,3],[4,5,6],[7,8,9]] )
array2 = array1.copy()
for i in range(array1.shape[0]):
for j in range(array1.shape[1]):
array2[i, j] = array1[i, j]
print(array2)
- 张量的类型
z.dtype
dtype('int32')
- 张量的维度
z.ndim
2
- 元素个数
z.size
9
- 内存所占字节数
z.itemsize
4
3. 张量的运算
- 逐项运算
对应相同位置上的运算
import numpy as np
a = np.array([[1,2],
[1,1]])
b = np.array([[2,3],
[4,5]])
print(a + b)
print(a * b)
array([[3, 5],
[5, 6]])
array([[2, 6],
[4, 5]])
- 扩大倍数
a*5
array([[5, 10],
[5, 5]])
- 点积
np.dot(a,b)
array([[10, 13],
[ 6, 8]])
- 转置
np.transpose(a)
array([[1, 1],
[2, 1]])