【发布时间】:2020-02-21 23:00:38
【问题描述】:
例如,我将数据存储在数组中
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 条件,但我想知道是否有更有效的方法来处理数组,当维度可以变化时?
【问题讨论】:
-
列数总是相同的,所以只有在有 0 行时才会出现这种情况,这不是问题。问题是,当有 1 行时,因为数组只有 1 个索引
-
只有一行的时候,我想要列表的第二个条目,所以myList[1]
-
myList的类型是np.ndarray?还是实际的list类型? -
嵌套列表是什么意思?
genfromtxt不返回列表。它将返回一个二维数组或一个带有复合dtype的一维数组。shape和dtype的数组是什么? -
是的,你是对的,我对类型不精确。因此,
mylist的类型为np.ndarray,如果多于 1 行,mylist[0]的类型为np.void。这意味着,我可以通过[[x[1] for x in mylist] if isinstance(mylist[1], np.void) else mylist[1]]做到这一点
标签: python list numpy indexing