numpy数组 维度
时间: 2025-05-18 19:26:53 浏览: 30
### NumPy 数组的维度概念及操作详解
#### 什么是NumPy数组的维度?
NumPy中的`ndarray`是一个多维数组对象,其核心特性之一就是支持多种维度的数据结构。数组的维度通常被称为轴(axis),其中一维数组只有一个轴(axis=0),二维数组有两个轴(axis=0 和 axis=1),以此类推。
对于任意一个NumPy数组,可以通过`.shape`属性获取它的形状,通过`.ndim`属性获取它的维度数[^2]。
```python
import numpy as np
arr_1d = np.array([1, 2, 3])
print(f"一维数组 shape: {arr_1d.shape}, ndim: {arr_1d.ndim}")
arr_2d = np.array([[1, 2, 3], [4, 5, 6]])
print(f"二维数组 shape: {arr_2d.shape}, ndim: {arr_2d.ndim}")
```
#### 如何创建不同维度的NumPy数组?
可以从Python列表或元组创建NumPy数组,也可以利用NumPy内置函数来生成特定模式的数组[^3]。
- **从列表/元组创建**
```python
arr_from_list = np.array([1, 2, 3]) # 一维数组
nested_list_array = np.array([[1, 2, 3], [4, 5, 6]]) # 二维数组
```
- **使用NumPy内置函数**
- `np.zeros()`:创建指定形状的零填充数组。
- `np.ones()`:创建指定形状的一填充数组。
- `np.full()`:创建指定形状并填充值的数组。
- `np.arange()`:类似于Python的`range()`函数,返回等差序列。
```python
zeros_arr = np.zeros((3, 4)) # 形状为(3, 4)的全零矩阵
ones_arr = np.ones((2, 2)) # 形状为(2, 2)的全一阵列
full_arr = np.full((2, 3), 7) # 填充值为7的数组
range_arr = np.arange(0, 10, 2) # 范围从0到10步长为2的一维数组
```
#### 数组维度的操作方法
##### 改变数组形状
可以使用`.reshape()`方法改变数组的形状而不改变数据。
```python
original_array = np.array([[1, 2, 3], [4, 5, 6]])
reshaped_array = original_array.reshape(3, 2)
print("Reshaped Array:\n", reshaped_array)
```
##### 合并与分割
- **合并**:可使用`np.concatenate()`、`np.vstack()`、`np.hstack()`等函数沿某个轴连接多个数组[^1]。
```python
array_a = np.array([[1, 2], [3, 4]])
array_b = np.array([[5, 6]])
concatenated_array = np.concatenate((array_a, array_b.T), axis=1)
print("Concatenated Array:\n", concatenated_array)
```
- **分割**:对应有`np.split()`、`np.hsplit()`和`np.vsplit()`等功能用于按条件拆分数组。
```python
split_arrays = np.split(original_array, indices_or_sections=[1], axis=0)
print("Split Arrays:", split_arrays)
```
##### 广播机制
当执行算术运算时,如果两个数组的形状不完全相同,则会应用广播规则使它们兼容[^4]。
```python
a = np.array([[1, 2, 3], [4, 5, 6]])
b = np.array([10])
result = a + b
print("Broadcasting Result:\n", result)
```
#### 数据类型转换与其他操作
有时需要在NumPy数组和其他库的对象之间互相转化,比如与PyTorch张量间的互转[^5]。
```python
tensor = torch.tensor([1., 2., 3.])
numpy_array = tensor.numpy()
pytorch_tensor_back = torch.from_numpy(numpy_array)
```
阅读全文
相关推荐

















