想玩转 Python,数据结构这块躲不开,尤其是数组。别怕,今天咱就好好聊聊 Python 里怎么创建数组,绝对让你上手。

说到数组,我得先纠正一个误解。Python 本身并没有像 C 语言那种严格意义上的数组。取而代之的是更灵活的列表(list)元组(tuple)。当然,如果你需要处理大规模数值计算,那 NumPy 库里的 ndarray 才是真正的利器,高性能,没得说。

先从最简单的列表开始。创建列表简直不要太容易,直接用方括号 [] 括起来,里面放你想放的东西,用逗号隔开。比如:

python
my_list = [1, 2, 3, "hello", True]
print(my_list)

是不是so easy?列表的特点就是,里面的元素可以是不同类型的,而且大小可变,想加就加,想删就删,非常自由。

但有时候,我们希望数据不可变,那就轮到元组登场了。元组用圆括号 () 括起来,创建方式类似列表:

python
my_tuple = (1, 2, 3, "world", False)
print(my_tuple)

元组一旦创建,就不能修改了。这个特性在某些场景下反而很有用,比如作为字典的键,或者防止数据被意外修改。

如果你觉得列表和元组还不够强大,需要进行复杂的数值计算,那 NumPy 的 ndarray 就是你的救星。首先,你需要安装 NumPy 库:

bash
pip install numpy

安装好之后,就可以用 numpy.array() 函数来创建 ndarray 了:

“`python
import numpy as np

my_array = np.array([1, 2, 3, 4, 5])
print(my_array)
“`

ndarray 的一个重要特点是,它要求所有元素必须是相同类型的。如果你传入不同类型的数据,NumPy 会尝试进行类型转换,但结果可能不是你想要的。例如:

“`python
import numpy as np

my_array = np.array([1, 2, “3”, 4.5])
print(my_array) # 输出 [‘1’ ‘2’ ‘3’ ‘4.5’],所有元素都被转换成了字符串
“`

所以,创建 ndarray 的时候要格外注意数据类型。

NumPy 还提供了很多方便的函数来创建特定类型的数组。比如,np.zeros() 可以创建全 0 数组,np.ones() 可以创建全 1 数组,np.arange() 可以创建等差数列,np.linspace() 可以创建指定范围内的等间隔数组。举几个例子:

“`python
import numpy as np

创建一个 3×3 的全 0 数组

zeros_array = np.zeros((3, 3))
print(zeros_array)

创建一个包含 1 到 10 的等差数列

arange_array = np.arange(1, 11)
print(arange_array)

创建一个包含 0 到 1 的 5 个等间隔数值的数组

linspace_array = np.linspace(0, 1, 5)
print(linspace_array)
“`

这些函数在数据分析和科学计算中非常常用,可以大大提高效率。

还有一种创建数组的方式,就是通过列表推导式。列表推导式是一种简洁而强大的语法,可以快速生成列表。例如,要创建一个包含 1 到 10 的平方的列表,可以这样写:

python
squares = [x**2 for x in range(1, 11)]
print(squares)

列表推导式不仅可以简化代码,还可以提高代码的可读性。

现在,咱们再来深入一点,说说多维数组。NumPy 的 ndarray 可以轻松创建多维数组,也就是矩阵。创建多维数组的方式和创建一维数组类似,只需要传入一个嵌套的列表或元组即可:

“`python
import numpy as np

创建一个 2×3 的二维数组

matrix = np.array([[1, 2, 3], [4, 5, 6]])
print(matrix)
“`

访问多维数组的元素也很简单,只需要用索引即可。例如,要访问矩阵的第 1 行第 2 列的元素(注意索引从 0 开始),可以这样写:

python
print(matrix[0, 1]) # 输出 2

NumPy 提供了强大的索引和切片功能,可以方便地访问和操作多维数组的元素。

创建数组还有一些需要注意的点。例如,数组的 shape 属性表示数组的维度和大小。对于一个二维数组来说,shape 属性返回一个元组,包含行数和列数。我们可以通过修改 shape 属性来改变数组的形状:

“`python
import numpy as np

my_array = np.arange(12) # 创建一个包含 0 到 11 的一维数组
print(my_array.shape) # 输出 (12,)

my_array.shape = (3, 4) # 将数组 Reshape 成一个 3×4 的二维数组
print(my_array)
print(my_array.shape) # 输出 (3, 4)
“`

但需要注意的是,Reshape 后的数组的元素个数必须和原始数组的元素个数相同。

另外,数组的 dtype 属性表示数组中元素的数据类型。我们可以通过指定 dtype 参数来创建特定类型的数组:

“`python
import numpy as np

创建一个 int32 类型的数组

int_array = np.array([1, 2, 3], dtype=np.int32)
print(int_array.dtype) # 输出 int32

创建一个 float64 类型的数组

float_array = np.array([1, 2, 3], dtype=np.float64)
print(float_array.dtype) # 输出 float64
“`

选择合适的数据类型可以有效地节省内存空间,并提高计算效率。

总而言之,Python 创建数组的方式有很多种,可以根据不同的需求选择合适的方法。列表和元组适合存储少量、类型不统一的数据,NumPy 的 ndarray 适合进行大规模数值计算。掌握这些方法,你就可以在 Python 的世界里自由地驾驭数据了!别犹豫了,赶紧动手试试吧!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。