在 Python 中,尤其是使用 numpy
和 torch
库进行数组和张量操作时,.shape
和 .size()
是两个非常常见的方法。虽然它们有时可以互换使用,但它们确实有一些细微的区别。
.shape
属性
- 类型:
.shape
是一个属性。 - 返回值:返回一个包含数组或张量每个维度大小的元组。
- 示例:
import numpy as np import torch np_array = np.array([[1, 2, 3], [4, 5, 6]]) torch_tensor = torch.tensor([[1, 2, 3], [4, 5, 6]]) print(np_array.shape) # 输出: (2, 3) print(torch_tensor.shape) # 输出: torch.Size([2, 3])
.size()
方法
- 类型:
.size()
是一个方法。 - 返回值:在
numpy
中,.size()
返回数组中的元素总数。在torch
中,.size()
返回一个包含张量每个维度大小的对象,这个对象行为类似于元组。 - 示例:
import numpy as np import torch np_array = np.array([[1, 2, 3], [4, 5, 6]]) torch_tensor = torch.tensor([[1, 2, 3], [4, 5, 6]]) print(np_array.size) # 输出: 6 (元素总数) print(torch_tensor.size()) # 输出: torch.Size([2, 3])
总结
-
在
numpy
中:array.shape
返回数组的形状(一个元组)。array.size
返回数组中元素的总数。
-
在
torch
中:tensor.shape
和tensor.size()
都返回张量的形状(torch.Size
对象,行为类似于元组)。tensor.numel()
是一个与numpy
中的array.size
类似的方法,用于返回张量中元素的总数。
示例代码
以下是一个完整的示例,展示了它们的不同用法:
import numpy as np
import torch
# Numpy 数组示例
np_array = np.array([[1, 2, 3], [4, 5, 6]])
print("Numpy array shape:", np_array.shape) # 输出: (2, 3)
print("Numpy array size:", np_array.size) # 输出: 6 (元素总数)
# Torch 张量示例
torch_tensor = torch.tensor([[1, 2, 3], [4, 5, 6]])
print("Torch tensor shape:", torch_tensor.shape) # 输出: torch.Size([2, 3])
print("Torch tensor size():", torch_tensor.size()) # 输出: torch.Size([2, 3])
print("Torch tensor numel():", torch_tensor.numel()) # 输出: 6 (元素总数)
希望这能帮助你更好地理解 .shape
和 .size()
在 numpy
和 torch
中的区别!