从列表创建 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 开始)。

Python NumPy 数组教程

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
日期:2020-07-15 11:16:25 来源:oir作者:oir