我有一个numpy数组,里面有列表。这是我的numpy数组结构
array([list(['記', 'hk', '超抵', '玩', '轉台', '優惠', '無限', '任用']),
list(['学生', '个人', '兼职', '援交', '加']), list(['轉', '台大', '優惠']), ...,
list(['af', 'ia']), list(['交換', 'sourc']),
list(['美食', 'cf', 'asm', '幾分'])], dtype=object)我用过的
np.where(Arr=="ia")但是我没有得到任何索引返回。这是我的输出
(array([], dtype=int64),)如何像普通的numpy数组一样访问元素索引?提前谢谢。
发布于 2021-07-08 23:35:47
NumPy只适用于长度相同的数组和列表。
您能做的最好的事情就是使所有列表都具有相同的大小,并追加None元素,然后使用NumPy函数。使用这种方法的缺点是,如果有一个列表比其他列表大得多,填充的数组将使用大量内存来保存虚拟的None值。
从this answer获得灵感,您可以使用以下代码
a = np.array([list(['記', 'hk', '超抵', '玩', '轉台', '優惠', '無限', '任用']),
list(['学生', '个人', '兼职', '援交', '加']), list(['轉', '台大', '優惠']),
list(['af', 'ia']), list(['交換', 'sourc']),
list(['美食', 'cf', 'asm', '幾分'])], dtype=object)
max_length = max(len(l) for l in a)
filled_array = np.array([l + [None] * (max_length-len(l)) for l in a])
print(np.where(filled_array=="ia"))发布于 2021-07-09 01:40:48
In [213]: Arr=np.array([list(['記', 'hk', '超抵', '玩', '轉台', '優惠', '無限', '任用']),
...: list(['学生', '个人', '兼职', '援交', '加']), list(['轉', '台大', '優惠'])
...: ,
...: list(['af', 'ia']), list(['交換', 'sourc']),
...: list(['美食', 'cf', 'asm', '幾分'])], dtype=object)
In [214]: Arr
Out[214]:
array([list(['記', 'hk', '超抵', '玩', '轉台', '優惠', '無限', '任用']),
list(['学生', '个人', '兼职', '援交', '加']), list(['轉', '台大', '優惠']),
list(['af', 'ia']), list(['交換', 'sourc']),
list(['美食', 'cf', 'asm', '幾分'])], dtype=object)使用常规Python列表方法:
In [215]: for i,l in enumerate(Arr):
...: print(i, 'ia' in l)
...:
0 False
1 False
2 False
3 True
4 False
5 False
In [216]: for i,l in enumerate(Arr):
...: if 'ia' in l:
...: print(i,l.index('ia'))
...:
3 1对象数据类型数组基本上是一个列表,几乎没有任何优点。numpy也没有太多自己的字符串方法。
https://stackoverflow.com/questions/68302884
复制相似问题