一、ndarray数据类型
numpy最核心的数据类型是ndarray,它是N维数组对象,代表着相同类型的元素的集合。一个ndarray数组几乎是一个Python列表的扩展,但它的操作更加灵活和高效。对于这个类型,有几个重要的属性需要了解:
import numpy as np nd = np.array([1, 2, 3, 4]) print(nd.ndim) # 维度数 print(nd.shape) # 各个维度的元素数量 print(nd.size) # 元素总数 print(nd.dtype) # 元素数据类型
其中,ndim、shape、size这三个属性以及dtype数据类型属性是我们必须知道的。
二、创建ndarray数组
ndarray数组可以从Python列表、元组、数组等进行创建。
# 从Python列表创建ndarray数组 nd1 = np.array([1, 2, 3]) # 从Python元组创建ndarray数组 nd2 = np.array((1, 2, 3)) # 通过numpy中的方法创建ndarray数组 nd3 = np.arange(10) # array([0, 1, 2, ..., 9]) nd4 = np.zeros((2, 3)) # 2行3列的全0矩阵 nd5 = np.ones((2, 3)) # 2行3列的全1矩阵 nd6 = np.eye(3) # 3行3列的单位矩阵 nd7 = np.random.random((2, 2)) # 随机2行2列的数组
三、ndarray数组的索引和切片
ndarray中的元素可以通过它们在数组中的位置进行访问,该位置是由数组的整数索引标志。可以使用切片符号‘:’来获取部分数组。下面的代码展示了如何对ndarray数组进行索引和切片。
# 一维数组的索引和切片 nd1 = np.array([1, 2, 3]) print(nd1[0]) # 1 print(nd1[1:3]) # [2 3] # 二维数组的索引和切片 nd2 = np.array([[1, 2, 3], [4, 5, 6]]) print(nd2[1, 2]) # 6 print(nd2[1, :]) # [4 5 6] print(nd2[:, 2]) # [3 6]
四、数组的运算与变形
numpy中可以对ndarray数组进行各种基本的数学操作、运算、变形等。下面的示例展示了一些基本的示例操作。
nd1 = np.array([1, 2, 3]) nd2 = np.array([2, 3, 4]) # 数组加法 print(nd1 + nd2) # [3 5 7] # 数组乘法 print(nd1 * nd2) # [2 6 12] # 数组变形 nd3 = np.array([[1, 2], [3, 4]]) print(nd3.reshape(1, 4)) # [[1 2 3 4]] # 数组求和 print(nd3.sum(axis=0)) # [4 6] print(nd3.sum(axis=1)) # [3 7]
五、线性代数
numpy提供了许多操作矩阵和向量操作的函数,可以方便的进行线性代数计算,例如计算行列式、矩阵乘法、逆矩阵等操作。
a = np.array([[1, 2], [3, 4]]) b = np.array([[4, 5], [6, 7]]) c = np.dot(a, b) # 矩阵乘法 print(c) # [[16, 19], [36, 43]] d = np.linalg.det(a) # 行列式 print(d) # -2.0 e = np.linalg.inv(a) # 逆矩阵 print(e) # [[-2. , 1. ], [ 1.5, -0.5]]
总结
本文简单介绍了numpy库中最重要的概念:ndarray。我们学习了ndarray的基本属性、创建方式、索引和切片、数组运算与变形以及线性代数等方面的操作。掌握了这些知识,我们可以更加高效、方便地处理数组、矩阵等数据类型。numpy的强大之处在于其底层的优化操作,使得我们可以在处理大规模数组时,得到快速、高效的操作及计算结果。
原创文章,作者:MUKS,如若转载,请注明出处:https://www.506064.com/n/146039.html