如何解决我可以设置一个函数来调用列表中的特定索引吗?
我有长度为 n
的 p
列表(实际上是数组,但我将它们视为列表)。我想从第一行、第二行和第三行中提取前三个值。这是我目前所拥有的:
k0= K[0][0:3]
k1= K[1][0:3]
k2= K[2][0:3]
哪里
k0= [a,b,c]
k1= [d,e,f]
k2= [g,h,i]
这样
concatenated_ko = []
for j in range(0,3):
k = "k"+str(j)
concatenated_ko.append(k)
print(concatenated_ko)
当前打印
['k0','k1','k2']
但应该打印
[a,c,d,f,i,j]
编辑:我认为它归结为我最初使用的对象从 <class 'numpy.ndarray'>
变为 <class 'str'>
。通过 np.ndarray(k)
强制将类型从字符串更改为数组也不起作用。
有什么办法可以改回来吗?
解决方法
您已经说过“想要从第一行、第二行和第三行中提取前三个值”。因此,不是分别创建三个列表 k0
、k1
和 k2
,您可以将其放入迭代中并直接对 K
进行操作,方法是首先对前 3 个进行切片列。
A.
concatenated_ko = []
for row in K[:3]:
concatenated_ko.extend(row[:3])
B. 或者,如果您想使用索引:
concatenated_ko = []
for idx in range(3):
concatenated_ko.extend(K[idx][:3])
C. 假设 K 是一个 5x5 数组:
>>> K
array([[ 5,12,10,70,4],[102,6,120,60,22],[150,100,110,2,150],[ 15,20,22,30],[ 20,55,1,1]])
然后要将前 3 行的前 3 列作为单个数组,可以使用 ndarray.flatten()
:
>>> K[:3,:3].flatten()
array([ 5,102,150,110])
>>> K[:3,:3].flatten().tolist()
[5,110]
另一种选择,不推荐:要对原始代码进行小幅修改,请使用 eval
从其变量名称中获取列表,并使用 extend
而不是append
:
# with k0,k1,k2 setup as per your question
for j in range(0,3):
k = "k"+str(j)
concatenated_ko.extend(eval(k))
,
如果您想实现 [a,b,c,d,e,f,h,i,j]
,您可以执行以下操作:
concatenated_ko = []
for arr in [k0,k2]:
concatenated_ko += [*arr]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。