当前位置:优草派 > 问答 > Python问答

python中numpy数组与list如何相互转换?

标签: Python  Python开发  NumPy数组  作者: nakazawa

回答:

Python中的NumPy库提供了一种强大的数据结构——数组。与Python原生的列表(list)不同,NumPy数组是可变序列的同构数据容器,它可以包含同一种数据类型的元素,并且支持高效的向量化计算。在实际应用中,我们经常需要将NumPy数组与Python列表相互转换,以便进行数据处理、可视化、机器学习等工作。本文将从多个方面介绍NumPy数组与Python列表的相互转换方法。1. 将列表转换为数组

在NumPy中,我们可以通过array()函数将Python列表转换为NumPy数组。下面是一个简单的例子:

```python

import numpy as np

a = [1, 2, 3, 4, 5]

b = np.array(a)

print(b)

```

输出结果为:

```

[1 2 3 4 5]

```

我们可以看到,将列表a转换为NumPy数组b后,输出结果为一维数组。如果列表中包含多个子列表,那么转换后的数组就是多维数组。例如:

```python

a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

b = np.array(a)

print(b)

```

输出结果为:

```

[[1 2 3]

[4 5 6]

[7 8 9]]

```

此时,转换后的数组b是一个3行3列的二维数组。

2. 将数组转换为列表

要将NumPy数组转换为Python列表,我们可以使用tolist()函数。下面是一个简单的示例:

```python

import numpy as np

a = np.array([1, 2, 3, 4, 5])

b = a.tolist()

print(b)

```

输出结果为:

```

[1, 2, 3, 4, 5]

```

我们可以看到,将数组a转换为Python列表b后,输出结果为一维列表。如果数组是多维的,那么转换后的列表也是多维的。例如:

```python

a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

b = a.tolist()

print(b)

```

输出结果为:

```

[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

```

此时,转换后的列表b是一个3行3列的二维列表。

3. 数组与列表的元素类型转换

在Python中,列表可以包含不同类型的元素,而NumPy数组则要求所有元素的类型相同。因此,在将列表转换为数组或将数组转换为列表时,需要考虑元素类型的转换问题。下面是一个示例:

```python

import numpy as np

a = [1, 2, 3, 4, 5]

b = np.array(a, dtype=float)

print(b)

c = np.array([1, 2, 3, 4, 5], dtype=str)

d = c.tolist()

print(d)

```

输出结果为:

```

[1. 2. 3. 4. 5.]

['1', '2', '3', '4', '5']

```

我们可以看到,在将列表a转换为数组b时,我们指定了元素类型为浮点型。转换后的数组b中的元素类型为float64。在将数组c转换为列表d时,我们指定了元素类型为字符串型。转换后的列表d中的元素类型为str。

4. 数组与列表的形状转换

在NumPy中,我们可以使用reshape()函数改变数组的形状。例如,将一个一维数组转换为二维数组:

```python

import numpy as np

a = np.array([1, 2, 3, 4, 5, 6])

b = a.reshape(2, 3)

print(b)

```

输出结果为:

```

[[1 2 3]

[4 5 6]]

```

我们可以看到,将一维数组a转换为二维数组b后,输出结果为2行3列的矩阵。如果我们要将一个二维数组转换为一维数组,可以使用flatten()函数。例如:

```python

a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

b = a.flatten()

print(b)

```

输出结果为:

```

[1 2 3 4 5 6 7 8 9]

```

我们可以看到,将二维数组a转换为一维数组b后,输出结果为一维数组。

5. 总结

本文介绍了NumPy数组与Python列表相互转换的方法。我们可以通过array()函数将列表转换为数组,通过tolist()函数将数组转换为列表。在转换过程中,需要考虑元素类型的转换问题。另外,我们还介绍了如何改变数组的形状,包括将一维数组转换为多维数组和将多维数组转换为一维数组。

TOP 10
  • 周排行
  • 月排行