从列表创建 NumPy 数组
Python 中的列表是用方括号括起来的许多元素。
假设你有一个列表:
l = [1, 2, 3, 4, 5]
现在要从这个列表创建一个数组,我们将使用 NumPy 模块的 array() 方法:
import numpy l = [1, 2, 3, 4, 5] a = numpy.array(l) print("The NumPy array from Python list = ", a)
同样,使用 array() 方法,我们可以从元组创建一个 NumPy 数组。
元组包含许多用圆括号括起来的元素,如下所示:
import numpy t = (1, 2, 3, 4, 5) a = numpy.array(t) print("The NumPy array from Python Tuple = ", a)
添加数组元素
我们可以使用 NumPy 模块的 append() 方法添加 NumPy 数组元素。
append 的语法如下:
numpy.append(array, value, axis)
这些值将被添加到数组的末尾,并且一个新的 ndarray 将返回,其中包含新旧值,如上所示。
轴是一个可选的整数,沿它定义数组将如何显示。
如果未指定轴,则数组结构将扁平化 。
考虑以下示例,其中首先声明一个数组,然后我们使用 append 方法向数组添加更多值:
import numpy a = numpy.array([1, 2, 3]) newArray = numpy.append (a, [10, 11, 12]) print(newArray)
将 NumPy 数组转换为列表
要将数组转换为列表,我们可以使用 NumPy 模块的 tolist() 方法。
考虑下面的代码:
import numpy a = numpy.array([1, 2, 3, 4, 5]) print("Array to list = ", a.tolist())
在这段代码中,我们简单地调用了将数组转换为列表的 tolist() 方法。
然后我们将新创建的列表打印到输出屏幕。
NumPy 数组切片
数组切片是从给定数组中提取子集的过程。
我们可以使用冒号 (:) 运算符对数组进行切片并指定数组索引的开始和结束,例如:
array[from:to]
这在下面的示例中突出显示:
import numpy a = numpy.array([1, 2, 3, 4, 5, 6, 7, 8]) print("A subset of array a = ", a[2:5])
这里我们提取了从索引 2 到索引 5 的元素。
如果我们要提取最后三个元素。
我们可以通过使用负切片来做到这一点,如下所示:
import numpy a = numpy.array([1, 2, 3, 4, 5, 6, 7, 8]) print("A subset of array a = ", a[-3:])
NumPy 数组长度
要获取 NumPy 数组的长度,我们可以使用 NumPy 模块的 size 属性,如下例所示:
import numpy a = numpy.array([1, 2, 3, 4, 5, 6]) print("The size of array = ", a.size)
检查 NumPy 数组是否为空
我们可以使用 size 方法返回数组中元素的总数。
在下面的示例中,我们有一个 if 语句,它使用 ndarray.size 检查数组中是否有元素,其中 ndarray 是任何给定的 NumPy 数组:
import numpy a = numpy.array([1, 2, 3]) if(a.size == 0): print("The given Array is empty") else: print("The array = ", a)
上面代码中,有3个元素,所以不为空,条件返回false。
如果没有元素,则 if 条件将变为真并打印空消息。
如果我们的数组等于:
a = numpy.array([])
删除一个元素
我们可以使用 NumPy 模块的 delete() 方法删除 NumPy 数组元素:
下面的示例演示了这一点:
import numpy a = numpy.array([1, 2, 3]) newArray = numpy.delete(a, 1, axis = 0) print(newArray)
在上面的例子中,我们有一个一维数组。
delete() 方法从数组中删除索引 1 处的元素。
追加一行
在本节中,我们将使用 append() 方法向数组添加一行。
就像在数组中添加一个元素一样简单。
考虑以下示例:
import numpy a = numpy.array([[1, 2, 3], [4, 5, 6]]) newArray = numpy.append(a, [[50, 60, 70]], axis = 0) print(newArray)
归一化数组
规范化数组是将数组值带到某个定义范围的过程。
例如,我们可以说我们想要对一个介于 -1 和 1 之间的数组进行归一化等等。
归一化的公式如下:
x = (x – xmin) / (xmax – xmin)
现在我们将这个公式应用到我们的数组中以对其进行规范化。
为了找到数组中的最大值和最小值,我们将分别使用 NumPy 的 max() 和 min() 方法。
import numpy x= numpy.array([400, 800, 200, 700, 1000, 2000, 300]) xmax = x.max() xmin = x.min() x = (x - xmin)/(xmax - xmin) print("After normalization array x = \n", x)
查找值的索引
要查找值的索引,我们可以使用 NumPy 模块的 where() 方法,如下例所示:
import numpy a = numpy.array([1, 2, 3, 4, 5]) print("5 is found at index: ", numpy.where(a == 5))
where() 方法也将返回数据类型。
如果只想获取索引,请使用以下代码:
import numpy a = numpy.array([1, 2, 3, 4, 5]) index = numpy.where(a == 5) print("5 is found at index: ", index[0])
对 NumPy 数组进行排序
我们可以使用 NumPy 模块的 sort() 方法对 NumPy 数组进行排序:
sort() 函数采用可选轴(整数),默认情况下为 -1.
轴指定我们要对数组进行排序的轴。
-1 表示数组将根据最后一个轴排序。
考虑下面的例子:
import numpy a = numpy.array([16, 3, 2, 6, 8, 10, 1]) print("Sorted array = ", numpy.sort(a))
在这个例子中,我们在打印语句中调用了 sort() 方法。
数组“a”被传递给排序函数。
将函数应用于所有数组元素
在下面的示例中,我们将创建一个 lambda 函数,我们将在该函数上传递我们的数组以将其应用于所有元素:
import numpy addition = lambda x: x + 2 a = numpy.array([1, 2, 3, 4, 5, 6]) print("Array after addition function: ", addition(a))
在此示例中,创建了一个 lambda 函数,它将每个元素增加 2.
为什么使用 NumPy
NumPy 模块提供了一个 ndarray 对象,我们可以使用它来对任何维度的数组执行操作。
ndarray 代表 N 维数组,其中 N 是任意数字。
这意味着 NumPy 数组可以是任何维度。
与 Python 列表相比,NumPy 具有许多优势。
我们可以对 NumPy 数组执行高性能操作,例如:
- 排序数组成员
- 数学和逻辑运算
- 输入/输出函数
- 统计和线性代数运算
数组索引
索引意味着引用数组的一个元素。
在以下示例中,我们也在单维和二维数组中使用了索引:
import numpy a = numpy.array([20, 13, 42, 86, 81, 9, 11]) print("Element at index 3 = ", a[3])
现在用二维数组索引:
import numpy a = numpy.array([[20, 13, 42], [86, 81, 9]]) print("Element at index a[1][2] = ", a[1][2])
索引 [1][2] 表示第二行第三列(因为索引从 0 开始)。
NumPy 是一个 Python 库/模块,用于 Python 编程中的科学计算。
NumPy 提供了一个多维数组对象和其他派生数组,例如掩码数组或者掩码多维数组。
删除一行
同样,我们可以使用 delete() 方法删除一行。
考虑以下示例,我们从二维数组中删除了一行:
import numpy a = numpy.array([[1, 2, 3], [4, 5, 6], [10, 20, 30]]) newArray = numpy.delete(a, 1, axis = 0) print(newArray)
在 delete() 方法中,首先给出数组,然后给出要删除的元素的索引。
在上面的例子中,我们删除了索引为 1 的第二个元素。
NumPy 数组到 CSV
要将数组导出到 CSV 文件,我们可以使用 NumPy 模块的 savetxt() 方法,如下例所示:
import numpy a = numpy.array([1, 2, 3, 4, 5]) numpy.savetxt("myArray.csv", a)
此代码将在存储我们的 Python 代码文件的位置生成一个 CSV 文件。
我们也可以指定路径。
当你运行脚本时,文件会像这样生成:
我们可以像这样删除另外的零填充:
numpy.savetxt("myArray.csv", a,fmt='%.2f')
将 NumPy 数组添加到另一个
我们可以使用 append() 方法将一个 NumPy 数组添加到另一个 NumPy 数组。
考虑以下示例:
import numpy a = numpy.array([1, 2, 3, 4, 5]) b = numpy.array([10, 20, 30, 40, 50]) newArray = numpy.append(a, b) print("The new array = ", newArray)
在此示例中,创建了一个 NumPy 数组“a”,然后创建了另一个名为“b”的数组。
然后我们使用 append() 方法并传递两个数组。
当数组“b”作为第二个参数传递时,它被添加到数组“a”的末尾。
添加一列
我们可以使用 NumPy 的 append() 方法插入一列。
考虑下面的示例,其中我们创建了一个二维数组并插入了两列:
import numpy a = numpy.array([[1, 2, 3], [4, 5, 6]]) b = numpy.array([[400], [800]]) newArray = numpy.append(a, b, axis = 1) print(newArray)
如果不使用axis属性,输出将如下所示。这就是数组结构扁平化的方式。
在 NumPy 中,我们还可以使用 insert() 方法插入元素或者列。
insert() 和 append() 方法之间的区别在于,在使用 insert() 方法时,我们可以指定要在哪个索引处添加元素,而 append() 方法会在数组末尾添加一个值。
考虑下面的例子:
import numpy a = numpy.array([1, 2, 3]) newArray = numpy.insert(a, 1, 90) print(newArray)
这里的 insert() 方法在索引 1 处添加元素。
记住数组索引从 0 开始。
如何安装 NumPy?
要安装 NumPy,系统需要 Python 和 Pip。
在 Windows 操作系统上运行以下命令:
pip install numpy
现在我们可以像这样在脚本中导入 NumPy:
import numpy