数组上的Python列表理解
我有一个numpy数组列表,我正在尝试创建一个包含原始列表中所有元素的新列表,除了一个。我有以下代码:数组上的Python列表理解,python,arrays,numpy,Python,Arrays,Numpy,我有一个numpy数组列表,我正在尝试创建一个包含原始列表中所有元素的新列表,除了一个。我有以下代码: for i in xrange(FOLDS): #fold_sample_sets and fold_sample_labels are a list of 10 numpy arrays. training_samples = [s for s in fold_sample_sets if fold_sample_sets.index(s) != i] trainin
for i in xrange(FOLDS):
#fold_sample_sets and fold_sample_labels are a list of 10 numpy arrays.
training_samples = [s for s in fold_sample_sets if fold_sample_sets.index(s) != i]
training_labels = [l for l in fold_label_sets if fold_label_sets.index(l) != i]
我在解释器中用了一些小例子来尝试这个方法,它似乎很有效。但这里我得到了以下错误:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
关于如何解决这个问题有什么建议吗?您可以使用数组切片
for i in range(FOLDS):
# omit set #i from the list
training_samples = fold_sample_sets[:i] + fold_sample_sets[i+1:]
training_labels = fold_label_sets [:i] + fold_label_sets [i+1:]
可以使用数组切片
for i in range(FOLDS):
# omit set #i from the list
training_samples = fold_sample_sets[:i] + fold_sample_sets[i+1:]
training_labels = fold_label_sets [:i] + fold_label_sets [i+1:]
根据你的理解,你有:
if fold_sample_sets.index(s) != i
if
的条件必须为真/假。通常,当条件是包含多个元素的数组时,会产生此ValueError。例如:
if np.array([True,False]):
print(1)
这个条件是真的,还是假的?还是两者都有?它是否应该打印1
错误是建议您使用np.any
或np.all
将多个值减为一个。另一种方法是确保未将逻辑运算符应用于多元素数组
什么是折叠样本集索引i(对于s的典型值
)
看起来像list
。index
不适用于数组元素。为了计算这个索引,Python将s
与集合中的每个元素进行比较。当我们比较一个列表和另一个列表时,[1,2]==[3,4]
,我们得到一个简单的布尔值,False
。但是当我们比较一个数组和另一个数组时,我们得到另一个数组:np.array([1,2])==np.array([3,4])
,array([False,False],dtype=bool)
。这就是产生歧义的地方
进行相同理解的更好方法(没有此.index
)是:
根据你的理解,你有:
if fold_sample_sets.index(s) != i
if
的条件必须为真/假。通常,当条件是包含多个元素的数组时,会产生此ValueError。例如:
if np.array([True,False]):
print(1)
这个条件是真的,还是假的?还是两者都有?它是否应该打印1
错误是建议您使用np.any
或np.all
将多个值减为一个。另一种方法是确保未将逻辑运算符应用于多元素数组
什么是折叠样本集索引i
(对于s的典型值
)
看起来像list
。index
不适用于数组元素。为了计算这个索引,Python将s
与集合中的每个元素进行比较。当我们比较一个列表和另一个列表时,[1,2]==[3,4]
,我们得到一个简单的布尔值,False
。但是当我们比较一个数组和另一个数组时,我们得到另一个数组:np.array([1,2])==np.array([3,4])
,array([False,False],dtype=bool)
。这就是产生歧义的地方
进行相同理解的更好方法(没有此.index
)是:
这是可行的,但我仍然好奇为什么我会得到这个错误。这是可行的,但我仍然好奇为什么我会从python文档()fold_sample_集合中得到这个错误。index(s)应该是列表fold_sample_集合中s的索引。在进一步的测试中,我发现.index
不适用于数组。请参阅我的编辑。从python文档()fold_sample_集合。index(s)应该是列表fold_sample_集合中s的索引。在进一步的测试中,我发现.index
不适用于数组。查看我的编辑。