I converted a PyTorch Tensor into a NumPy ndarray, and as it’s shown below ‘a’ and ‘b’ both have different ids so they point to different memory locations.
I know in PyTorch underscore indicates in-place operation so a.add_(1) does not change the memory location of a, but why does it change the content of the array b (due to the difference in id)?
import torch
a = torch.ones(5)
b = a.numpy()
a.add_(1)

print(id(a), id(b))
print(a)
print(b)

Results:
139851293933696 139851293925904
tensor([2., 2., 2., 2., 2.])
[2. 2. 2. 2. 2.]

PyTorch documentation:

Converting a torch Tensor to a NumPy array and vice versa is a breeze.
The torch Tensor and NumPy array will share their underlying memory
locations, and changing one will change the other.

But why?
(They have different IDs so must be independent)