想玩转 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 的世界里自由地驾驭数据了!别犹豫了,赶紧动手试试吧!
评论(0)