如何在 NumPy 中迭代列


NumPy 的名称代表 Numerical Python。它有助于解决数组上的数学运算。在 Python 中,我们有一些内置函数,例如 nditor()、T()、array()、shape[] 和 apply_along_axis(),它们将用于在 NumPy 中迭代列。

语法

以下语法在示例中使用 -

nditer()

NumPy 模块包含此用于迭代器对象的内置函数。

T()

此函数指的是列数据框中索引的转置。

array()

这是 Python 中的一个内置函数,用于创建数组。数组通过收集相同数据类型的项来定义。

apply_along_axis()

apply_along_axis() 在输入数组的 1D 切片上运行给定函数,其中切片沿着我们选择的轴进行。

Shape[]

这用于获取名为 NumPy 的模块的维度。此外,还获取 Pandas 模块的维度。

使用 nditer() 函数

该程序使用 for 循环,其中变量通过内置函数 nditer() 与 T() 迭代来在 NumPy 中迭代列。

示例

在以下示例中,我们将开始导入名为 numpy 的模块并将对象引用作为 ny。然后使用内置函数 array() 与 ny 创建 4*3 矩阵数组并将其存储在变量 arr 中。接下来,使用 for 循环,其中变量 col 迭代 nditer(),该函数接受参数 - arr.T() 来转置列的索引。最后,在 print 函数中使用变量 col 以获取结果。

import numpy as ny
# Create a sample 2D array
arr = ny.array([[10, 20, 30], [40, 50, 60], [70, 80, 90], [110, 120, 130]])
print("Iteration of all the columns:")
# Iterate over columns using nditer
for col in ny.nditer(arr.T):
    print(col)

输出

 Iteration of all the columns:
10
20
30
40
50
60
70
80
90
110
120
130

使用数组转置

该程序使用矩阵的概念,它将矩阵按行转置为列,并以此方式在 NumPy 中迭代列。

示例

在以下示例中,通过导入模块开始程序,然后使用内置函数 array() 创建列表矩阵以存储在变量 arr 中。现在使用 for 循环转置输入数组矩阵,其中变量 col 在 arr.T 的帮助下迭代每一列。最后,我们使用变量 col 打印结果。

# import the module
import numpy as np
# create the list matrix
arr = np.array([[1, 2, 3 ],
				[4, 5, 6],
				[7, 8, 9]]
				)
# Transpose array matrix
for col in arr.T:
	print(col)

输出

 [1 4 7] 
 [2 5 8] 
 [3 6 9]

使用 apply_along_axis() 函数

该程序使用内置函数 apply_along_axis(),它将切片输入数组的给定函数以在 NumPy 中迭代每一列。

示例

在以下示例中,开始导入模块,然后在变量 arr 中创建 2D 数组表示。接下来,使用用户定义的函数操作每一列,该函数接受名为 col 的参数,该参数通过内置函数 apply_along_axis() 接收值,它将打印列。最后,apply_along_matrix() 接受以下参数 -

  • p_column:这是第一个参数,作为命名函数定义传递给转置数组arr.T(第三个参数)的每一列。

  • 0:第二个参数 0 指定应沿输入数组的第一轴(列)应用该函数。

  • arr.T:转置数组,这将有助于迭代列。

import numpy as np
# 2D array representation
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# operate each column using the function
def p_column(col):
    print(col)
# Iterate the column
np.apply_along_axis(p_column, 0, arr.T)

输出

[1 2 3]
[4 5 6]
[7 8 9]

使用 While 循环

该程序使用 shape 方法获取 NumPy 模块的维度,并使用 while 循环迭代输入数组的每一列。

示例

在以下示例中,开始导入模块并创建输入数组以在变量 arr 中创建一个包含行和列的数组列表。使用相同的变量,它将使用 Shape[] 获取数组的维度并将其存储在变量 num_cols 中。然后将变量 col_index 初始化为 0,表示初始索引值。接下来,使用 while 循环使用 < 运算符设置条件。然后使用切片和增量生成结果。

import numpy as np
# Create the 2D array
arr = np.array([[1, 5, 9], [13, 14, 21], [25, 29, 33]])
# Get the number of columns
num_cols = arr.shape[1]
# Initialize the column index
col_index = 0
# Using a while loop iterates over each column
while col_index < num_cols:
    col = arr[:, col_index]
    print(col)
    col_index += 1

输出

 [ 1 13 25] 
 [ 5 14 29] 
 [ 9 21 33]

结论

我们讨论了解决此问题陈述的各种方法。我们看到了 NumPy 的一些流行的迭代内置函数,即 nditer()、T() 和 shape[],它们有助于迭代列。NumPy 模块在以下操作中工作,例如线性代数、矩阵和傅里叶变换。

更新于: 2023-08-16

1K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告