You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何以多种方式遍历多维NumPy数组?含行、列及反向遍历示例

NumPy数组的四种遍历实现

首先先把你给出的列表转换成NumPy数组,这是操作的前提:

import numpy as np
A = np.array([["a", "b", "c"], ["d", "e", "f"], ["g", "h", "i"]])

下面针对四种遍历需求分别给出实现方式:

1. 按行遍历

这是最基础的遍历顺序,NumPy的数组展平方法默认就是按行(C语言顺序)来的,一行一行把元素串起来:

# 方法1:直接展平(推荐)
O1 = A.flatten().tolist()
# 或者用ravel(),区别是ravel返回原数组视图,flatten返回副本
# O1 = A.ravel().tolist()

# 手动遍历的方式(适合理解逻辑)
O1_manual = []
for row in A:
    O1_manual.extend(row)

两种方法得到的结果都是 ["a", "b", "c", "d", "e", "f", "g", "h", "i"]

2. 按列遍历

要实现按列遍历,核心是先把数组的行和列转置,让原来的列变成行,再按行展平就行:

# 方法1:转置后展平(推荐)
O2 = A.T.flatten().tolist()

# 手动遍历的方式
O2_manual = []
# 遍历转置后的每一行(也就是原数组的每一列)
for col in A.T:
    O2_manual.extend(col)
# 或者通过索引遍历
O2_index = []
for j in range(A.shape[1]):
    for i in range(A.shape[0]):
        O2_index.append(A[i, j])

结果都是 ["a", "d", "g", "b", "e", "h", "c", "f", "i"]

3. 反向按行遍历

简单来说就是先把整个数组的行反转,再把每行的元素反转,最后展平:

# 方法1:切片组合(推荐,简洁高效)
O3 = A[::-1, ::-1].flatten().tolist()

# 手动遍历的方式
O3_manual = []
# 先反向遍历行,再反向遍历每行的元素
for row in reversed(A):
    O3_manual.extend(reversed(row))

这里A[::-1]是把行的顺序反转(变成[["g","h","i"], ["d","e","f"], ["a","b","c"]]),[:,::-1]是把每行的元素反转,最终展平后得到 ["i", "h", "g", "f", "e", "d", "c", "b", "a"]

4. 反向按列遍历

你需要的顺序是从最后一列到第一列,每列从最后一行到第一行,可以通过切片组合或者手动索引实现:

# 方法1:切片组合(推荐)
O4 = A[::-1, ::-1].T.flatten().tolist()

# 手动遍历的方式
O4_manual = []
# 先反向遍历列索引(从右到左)
for j in reversed(range(A.shape[1])):
    # 再反向遍历行索引(从下到上)
    for i in reversed(range(A.shape[0])):
        O4_manual.append(A[i, j])

最终结果是 ["i", "f", "c", "h", "e", "b", "g", "d", "a"],完全符合你的需求。

内容的提问来源于stack exchange,提问作者rlcmtzc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:51:05