首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取python numpy数组中包含list的任何元素的索引?

如何获取python numpy数组中包含list的任何元素的索引?
EN

Stack Overflow用户
提问于 2021-07-08 21:46:27
回答 2查看 194关注 0票数 0

我有一个numpy数组,里面有列表。这是我的numpy数组结构

代码语言:javascript
复制
array([list(['記', 'hk', '超抵', '玩', '轉台', '優惠', '無限', '任用']),
       list(['学生', '个人', '兼职', '援交', '加']), list(['轉', '台大', '優惠']), ...,
       list(['af', 'ia']), list(['交換', 'sourc']),
       list(['美食', 'cf', 'asm', '幾分'])], dtype=object)

我用过的

代码语言:javascript
复制
np.where(Arr=="ia")

但是我没有得到任何索引返回。这是我的输出

代码语言:javascript
复制
(array([], dtype=int64),)

如何像普通的numpy数组一样访问元素索引?提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-08 23:35:47

NumPy只适用于长度相同的数组和列表。

您能做的最好的事情就是使所有列表都具有相同的大小,并追加None元素,然后使用NumPy函数。使用这种方法的缺点是,如果有一个列表比其他列表大得多,填充的数组将使用大量内存来保存虚拟的None值。

this answer获得灵感,您可以使用以下代码

代码语言:javascript
复制
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"))
票数 0
EN

Stack Overflow用户

发布于 2021-07-09 01:40:48

代码语言:javascript
复制
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列表方法:

代码语言:javascript
复制
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也没有太多自己的字符串方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68302884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档