Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从列表中保留索引_Python - Fatal编程技术网

Python 从列表中保留索引

Python 从列表中保留索引,python,Python,如果我有以下数组: T = array([[list([2])], [list([])], [list([0])]], dtype=object) 我只想在键入T[0]时返回索引[2]。目前我得到array([list([2])],dtype=object。 我不想要列表、圆括号和其他文本,我只想要[2] ##以下附加信息(编辑) 我有一个更复杂的案例,我想尝试一下,但我已经创建了一个简单的例子,首先看看这个概念是否有效,这是我遇到麻烦的地方。 我有下面

如果我有以下数组:

T = array([[list([2])],
          [list([])],
          [list([0])]], dtype=object)
我只想在键入
T[0]
时返回索引
[2]
。目前我得到
array([list([2])],dtype=object。

我不想要列表、圆括号和其他文本,我只想要
[2]

##以下附加信息(编辑) 我有一个更复杂的案例,我想尝试一下,但我已经创建了一个简单的例子,首先看看这个概念是否有效,这是我遇到麻烦的地方。 我有下面的函数,您可以在其中指定一个要搜索的集合,并提供一个集合,该集合包含您正在查找的ti中的元素。 然后,该函数返回找到值的主集合中的索引

find = lambda searchList, elem: [[i for i, x in enumerate(searchList) if     x == e] for e in elem]
我想研究的主要集合由两个字符串数组组成,然后连接在一起形成一个3x2数组

A = np.array([['A'], ['B'],['C'], ['D']])` # main set 1
array([['A'],
       ['B'],
       ['C'],
       ['D']],
      dtype='<U1')

D = np.array([['E'], ['F'],['G'], ['H']]) # main set 2

array([['E'],
       ['F'],
       ['G'],
       ['H']],
      dtype='<U1')


F = np.column_stack((A,D)) # Combined Array - The main set in which to look through using the find function.
array([['A', 'E'],
       ['B', 'F'],
       ['C', 'G'],
       ['D', 'H']],
      dtype='<U1')
我想把它们组合成一个数组,并排排列,3行2列

H = np.column_stack((C,E))
array([['C', 'G'],
       ['D', 'D'],
       ['A', 'E']],
      dtype='<U1')
现在,我创建了另一个数组,其中只有数字1、2、3和4

B = np.array([[1],[2],[3],[4]])
我想在搜索函数中使用返回给我的索引,即

[2], [] (blank) and [0]
任意从数组B中提取数字并将其存储在单独的数组中 i、 e.我想要
L=[3],[1]

使用: L=np.空([len(I),1])

但是我得到了一个错误:

L[j] = B[T[j]]
ValueError: could not broadcast input array from shape (0,1) into shape (1)

您需要正确索引元素。以下是嵌套列表的各个级别:

>>> import numpy as np
>>> T = np.array([[list([2])],
...     [list([])],
...     [list([0])]], dtype=object)
>>> T
array([[[2]],
       [[]],
       [[0]]], dtype=object)
>>> T[0]
array([[2]], dtype=object)
>>> T[0][0]
[2]
>>> T[0][0][0]
2
看到了吗

如果希望T[0]为2,则需要将
2
作为列表的第一个元素,而不是包含包含2的列表。例如:

>>> S = np.array([2, None, 0])
>>> S
array([2, None, 0], dtype=object)
>>> S[0]
2

使用给定的精确数据的解决方案是T[0][0];T[0]返回数组([list([2]),取数组中的零元素返回[2](取数组中的零元素返回2)。但是,不清楚这是用于什么应用程序(将[2]称为“索引”会引起危险信号)。最好给出更大的上下文,并获取关于如何实现更大目标的建议。例如,如果将其存储为系列或数据帧,则可以存储[2]作为一个名字,然后访问它,而不是钻进数组中的几个层。< /P>请考虑。数组是从哪里来的?NUMPY?有一个原因,你不能只说<代码> t=(2,‘’,0’)。?这一点要深入得多,但如果我能让这一点发挥作用,我可以管理其余部分。这用于将文件名中的字符串与主控文档中的字符串进行比较,然后返回主控文档中指定列旁边的值。当文件名与下载内容相关时,文件名会一直更改。您似乎忘记了将I的定义。创建一个匿名函数,然后将其分配给一个变量,这有点奇怪。这真的感觉像是一个XY问题。似乎
find
可以返回任何小于
len(G)的值-1
,G有6个元素,但
B
只有4个元素。如果不是因为这个问题,我觉得有两行代码可以做到这一点:
lookup=pd.Series(B,index=G)
L=[[lookup[x]for x in G如果x==y]for y in I]
。你好,Prune,非常感谢:)我会试一试,谢谢你的快速回复:DGlad来帮忙。当你做出决定时,请记住投下有用的一票,并接受你最喜欢的答案(即使你必须自己写),所以堆栈溢出可以正确地存档这个问题。很高兴知道,谢谢。这是我第一次来这里,所以我要记住。我要做的是存储这些值(索引)在另一个数组中。此列表是动态的,并且显示的索引的数量和值将经常更改。因此,我正在尝试找到一个解决方案,自动检索并存储这些整数。非常感谢您,我相信通过您分享的知识,我已成功解决了此问题。我将B[T[j]]更改为B[T[j][0]]我只是在我的记事本上打出来,字符限制可能会导致一些评论(我是新手,抱歉)。我刚刚编辑了我的主要问题,希望能帮上忙谢谢你的帮助,非常感谢,我设法解决了上面评论的问题。再次感谢。请参阅我之前的回答:你需要三个下标,而不是两个。你的回答的其余部分应该是对主要问题的评论。@Prune OP说他们需要
[2]
返回。这是通过两个下标实现的,而不是三个下标。
L[j] = B[T[j]]
ValueError: could not broadcast input array from shape (0,1) into shape (1)
>>> import numpy as np
>>> T = np.array([[list([2])],
...     [list([])],
...     [list([0])]], dtype=object)
>>> T
array([[[2]],
       [[]],
       [[0]]], dtype=object)
>>> T[0]
array([[2]], dtype=object)
>>> T[0][0]
[2]
>>> T[0][0][0]
2
>>> S = np.array([2, None, 0])
>>> S
array([2, None, 0], dtype=object)
>>> S[0]
2