在numpy对象数组中搜索

2024-09-24 22:27:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个<type 'numpy.ndarray'>类型的Numpy对象数组

>>> xt4
array([['D', 'F'], ['B', 'C', 'E']], dtype=object)

但是当我使用在数组中搜索特定值时纽比。在哪里,它不返回任何内容,尽管它存在。在

^{pr2}$

相反,我期望数组中该值对应的[row]/[col]索引。这对int很好,但在对象数组中搜索字符串时失败。在

编辑1

  1. 我无法控制对象数组,它不太可能是方形数组。在
  2. 我需要[row]/[col]中存在的值的[row]/[col]索引。在

Tags: 对象numpy类型内容objecttypecol数组
2条回答

您所拥有的是一个1D对象数组,并且这个命令上的==运算符将尝试将对象与对象匹配。最简单的方法如下:

>>> xt4=='D'
array([False, False], dtype=bool)

Numpy试图将D['D', 'F']和{}匹配。可以使用如下所示的char数组:

^{pr2}$

任何类型的布尔索引都可以正常工作:

>>> arr=='D'
array([[ True, False, False],
       [False, False, False]], dtype=bool)
>>> np.where(arr=='D')
(array([0]), array([0]))

你的问题是NumPy并不真正支持锯齿数组,就像它支持其他数组一样。您可以创建它们,但它们并不总是以您期望的方式执行。
如果数组中的每一行的长度相同,那么它将按预期执行。在

>>> xt4 = array([['D', 'F'], ['B', 'C']], dtype=object)
>>> numpy.where(xt4=='D')
(array([0]), array([0]))

相关问题 更多 >