也可到我个人博客网站浏览博客
摘要
- 在Python的基础操作和机器学习算法等方面,经常会用到数组或者矩阵的操作.但是操作的数据类型不同,起到的效果不同,导致的结果不同,若不注意,可能会导致算法或者模型结果与预期不同.本文将以 “*” 为例子介绍其在list array tensor 中的不同.
list中的 *
- 代码
@logger.catch()
@snoop
def list_mul():
a = [[1, 2], [3, 4]]
b = [[1, 2], [3, 4]]
logger.info("simple_version")
print(a*b)
numpy.array 中的 *
- 代码
@logger.catch()
@snoop
def array_mul():
a_array = np.array([[1, 2], [3, 4]])
b_array = np.array([[1, 2], [3, 4]])
logger.info("numpy_version")
print(a_array * b_array)
torch.tensor 中的 *
- 代码
@logger.catch()
@snoop
def tensor_mul():
a_tensor = torch.tensor([[1, 2], [3, 4]])
b_tensor = torch.tensor([[1, 2], [3, 4]])
logger.info("torch_version")
print(a_tensor * b_tensor)
总结
list 不能直接使用*实现两个列表相乘; 在相乘的两者尺寸保持一致时,array和tensor实现的都是对应元素相乘.