mismatch for datatypes when providing `Features` with `Array2D` and user specified `dtype` and using with_format("numpy")
NONE
It seems that https://github.com/huggingface/datasets/issues/5517 is exactly the same issue.

It was mentioned there that this would be fixed in version 3.x
2024-10-26T22:07:36Z
https://github.com/huggingface/datasets/issues/7254#issuecomment-2439750652
https://api.github.com/repos/huggingface/datasets/issues/7254
IC_kwDODunzps6Ra6P8
https://api.github.com/repos/huggingface/datasets/issues/comments/2439750652/reactions
2024-10-26T22:07:36Z
https://api.github.com/repos/huggingface/datasets/issues/comments/2439750652
https://avatars.githubusercontent.com/u/97193607?v=4
https://api.github.com/users/Akhil-CM/events{/privacy}
https://api.github.com/users/Akhil-CM/followers
https://api.github.com/users/Akhil-CM/following{/other_user}
https://api.github.com/users/Akhil-CM/gists{/gist_id}
https://github.com/Akhil-CM
Akhil-CM
U_kgDOBcsOhw
https://api.github.com/users/Akhil-CM/orgs
https://api.github.com/users/Akhil-CM/received_events
https://api.github.com/users/Akhil-CM/repos
https://api.github.com/users/Akhil-CM/starred{/owner}{/repo}
https://api.github.com/users/Akhil-CM/subscriptions
User
https://api.github.com/users/Akhil-CM
public
### Describe the bug

If the user provides a `Features` type value to `datasets.Dataset` with members having `Array2D` with a value for `dtype`, it is not respected during `with_format("numpy")` which should return a `np.array` with `dtype` that the user provided for `Array2D`. It seems for floats, it will be set to `float32` and for ints it will be set to `int64`

### Steps to reproduce the bug

```python
import numpy as np
import datasets
from datasets import Dataset, Features, Array2D

print(f"datasets version: {datasets.__version__}")

data_info = {
    "arr_float" : "float64",
    "arr_int" : "int32"
}

sample = {key : [np.zeros([4, 5], dtype=dtype)] for key, dtype in data_info.items()}

features = {key : Array2D(shape=(None, 5), dtype=dtype) for key, dtype in data_info.items()}
features = Features(features)

dataset = Dataset.from_dict(sample, features=features)

ds = dataset.with_format("numpy")
for key in features:
    print(f"{key} feature dtype: ", ds.features[key].dtype)
    print(f"{key} dtype:", ds[key].dtype)
```

Output:
```bash
datasets version: 3.0.2
arr_float feature dtype:  float64
arr_float dtype: float32
arr_int feature dtype:  int32
arr_int dtype: int64
```

### Expected behavior

It should return a `np.array` with `dtype` that the user provided for the corresponding member in the `Features` type value

### Environment info

- `datasets` version: 3.0.2
- Platform: Linux-6.11.5-arch1-1-x86_64-with-glibc2.40
- Python version: 3.12.7
- `huggingface_hub` version: 0.26.1
- PyArrow version: 16.1.0
- Pandas version: 2.2.2
- `fsspec` version: 2024.5.0