如何在python中基于数组的子集列表

Nei*_*eil 4 python list python-2.7

我在列表中有以下列名:

 vars = ['age','balance','day','duration','campaign','pdays','previous','job_admin.','job_blue-collar']
Run Code Online (Sandbox Code Playgroud)

我有一个由数组索引组成的数组

(array([1, 5, 7], dtype=int64),)
Run Code Online (Sandbox Code Playgroud)

我想基于数组索引对列表进行子集化

期望的输出应该是

vars = ['balance','pdays','job_admin.']
Run Code Online (Sandbox Code Playgroud)

我在python中尝试过类似的东西

for i, a in enumerate(X):
   if i in new_L:
       print i
Run Code Online (Sandbox Code Playgroud)

但是,它不起作用.

Meh*_*far 17

只需使用循环即可:

result=[]
for i in your_array:
   result.append(vars[i])
Run Code Online (Sandbox Code Playgroud)

或一个线性

 [vars[i] for i in your_array]
Run Code Online (Sandbox Code Playgroud)

  • 完美,没有额外的图书馆 (4认同)

FHT*_*ell 4

如果您numpy无论如何都在使用,请使用其高级索引

import numpy as np
vars = ['age','balance','day','duration','campaign','pdays',
        'previous','job_admin.','job_blue-collar']
indices = (np.array([1, 5, 7]),)

sub_array = np.asarray(vars)[indices]  
# --> array(['balance', 'pdays', 'job_admin.'], dtype='<U15')
Run Code Online (Sandbox Code Playgroud)

或者如果你想要一个list

sub_list = np.asarray(vars)[indices].tolist()
# --> ['balance', 'pdays', 'job_admin.']
Run Code Online (Sandbox Code Playgroud)