首页 > 解决方案 > 如果维度可以变化,我如何访问数组元素?

问题描述

例如,我将数据存储在数组中

myList = array([('A', 3, 2, 5),('B', 3, 7, 0),dtype=[('f0', '<U128'), ('f1', '<f8'), ('f2', '<f8'), ('f3', '<f8')])

它具有恒定数量的 >2 列和任意数量的行。我想将第二列读入一个新数组。我知道我可以做到这一点

[x[1] for x in myList]

或者

list(zip(*myList))[1]

但我的问题是,在某些情况下,数组只有一行,那么我只想要值myList[1]和上面的代码。我可以为此使用 if 条件,但我想知道是否有更有效的方法来处理数组,当维度可以变化时?

标签: pythonlistnumpyindexing

解决方案


提供myList的是一个实际的numpy数组,

def func(arr):
    if len(arr.shape) == 1:
        return arr[1]
    else:
        return arr[:, 1]

result = func(myList)

IfmyList是一个类型list

def func(lst):
    if isinstance(lst[0], list):
        return [x[1] for x in lst]
    else:
        return lst[1]

推荐阅读