Skip to main content
 首页 » 编程设计

python之如何从 Python 向量的特定索引列表中选择组件

2025年05月04日7sky-heaven

所以这里我有 x1vals:

>>> x1Vals 
[-0.33042515829906227, -0.1085082739900165, 0.93708611747433213, -0.19289496973017362, -0.94365384912207761, 0.43385903975568652, -0.46061140566051262, 0.82767432358782367, -0.24257307936591843, -0.1182761514447952, -0.29794617763330011, -0.87410892638408, -0.34732294121174467, 0.40646145339571249, -0.64082861589870865, -0.45680189916940073, 0.4688889876175073, -0.89399689430691298, 0.53549621114138612] 

这是我要选择的 x1Vals 索引列表

>>> np.where(np.dot(XValsOnly,newweights) > 0) 
 
>>>(array([ 1,  2,  4,  5,  6,  8,  9, 13, 15, 16]),) 

但是当我尝试以 Matlab 方式获取 x1Vals 的值时,我得到了这个错误:

>>> x1Vals[np.where(np.dot(XValsOnly,newweights) > 0)] 
 
Traceback (most recent call last): 
  File "<pyshell#69>", line 1, in <module> 
    x1Vals[np.where(np.dot(XValsOnly,newweights) > 0)] 
TypeError: list indices must be integers, not tuple 
>>> np.where(np.dot(XValsOnly,newweights) > 0) 

有解决办法吗?

请您参考如下方法:

问题是您的x1Vals 是一个list 对象,它不支持花式索引。你只需要用它构建一个数组:

x1Vals = np.array(x1Vals) 

您的方法会奏效。

更快的方法是使用 np.take:

np.take(x1Vals, np.where(np.dot(XValsOnly,newweights) > 0))