Python:从具有给定索引的列表创建数组

2024-09-30 01:34:48 发布

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

我知道这应该很简单,但我还是被困住了

我有两个等长数组a和b。有三个等长列表al1,al2,al3:其中我有这样的数对(a[I],b[I])=(al1[j],al2[j])。我把I和j的所有这些指数分别放在aindex和lindex中。我想创建另一个数组c(等于数组a的长度),其中包含来自al3的数字。你知道吗

参见代码:

import numpy as np

list1 = [9,7,8,2,3,4,1,6,0,7,8]
a = np.asarray(al)
list2 = [5,4,2,3,4,3,4,5,5,2,3]
b = np.asarray(bl)

al1 = [9,4,5,1,7]
al2 = [5,3,6,4,5]
al3 = [5,6,3,4,7]

lindex = [0,5,6]
aindex = [0,1,3]
index = np.asarray(aindex)

c = []
for i in range(0,len(list1)):
    if i in aindex:
    com = al3[i]
else:
    com = 'nan'

c.append(com)

我得到的是

c = [5, 6, 'nan', 4, 'nan', 'nan', 'nan', 'nan', 'nan', 'nan', 'nan']

我想要的是

c = [5, 'nan', 'nan', 'nan', 'nan', 6, 4, 'nan', 'nan', 'nan', 'nan']

请帮忙:-/


Tags: incom列表np数字数组nan指数
1条回答
网友
1楼 · 发布于 2024-09-30 01:34:48

我必须承认我不知道你在做什么,但你似乎想要的是:

>>> c = ['nan'] * len(a)
>>> for i, j in zip(aindex, lindex):
...     c[j] = al3[i]
... 
>>> c
[5, 'nan', 'nan', 'nan', 'nan', 6, 4, 'nan', 'nan', 'nan', 'nan']

它们的工作方式是首先将c初始化为包含所有nan的长度a的列表:

>>> c = ['nan'] * len(a)
>>> c
['nan', 'nan', 'nan', 'nan', 'nan', 'nan', 'nan', 'nan', 'nan', 'nan', 'nan']

zip所做的是将每个列表的元素配对在一起:

>>> zip(aindex, lindex)
[(0, 0), (1, 5), (3, 6)]

所以我遍历每一对,取第一个索引处的al3值,并将其赋给第二个索引处的c。任何未分配的都会保留'nan'。你知道吗

相关问题 更多 >

    热门问题