【发布时间】:2020-03-06 21:28:36
【问题描述】:
我已经尝试查看其他类似的帖子,但是,他们的解决方案并不能解决这个特定问题。使用来自post 的答案,我发现我收到错误:“具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()”,因为我以不同方式定义数组从他们的。他们的数组是大小(n,),而我的数组是大小(n,m)。此外,这个post 的解决方案也不起作用,因为它适用于列表。我能想到的唯一方法是:
当数组中至少有 1 个 True 时,则认为整个数组为 True:
filt = 4
tracktruth = list()
arraytruth = list()
arr1 = np.array([[1,2,4]])
for track in range(0,arr1.size):
if filt == arr1[0,track]:
tracktruth.append(True)
else:
tracktruth.append(False)
if any(tracktruth):
arraytruth.append(True)
else:
arraytruth.append(False)
当数组中没有单个 True 时,则认为整个数组为 False:
filt = 5
tracktruth = list()
arraytruth = list()
arr1 = np.array([[1,2,4]])
for track in range(0,arr1.size):
if filt == arr1[0,track]:
tracktruth.append(True)
else:
tracktruth.append(False)
if any(tracktruth):
arraytruth.append(True)
else:
arraytruth.append(False)
存在第二个 if-else 语句的原因是因为我希望将此掩码应用于多个数组并最终创建一个主列表,该列表描述哪些数组是真的,哪些是假的。但是,对于一个 for 循环和两个 if-else 语句,我认为这对于较大的数组来说会非常慢。有什么更快的方法来做到这一点?
【问题讨论】:
-
所以你只想检查值是否在嵌套数组中?
-
.any()没有给你想要的结果的例子是什么? -
@pierogi 为了清楚起见,我编辑了我的原始帖子。我想看看是否有任何值小于定义的数值。
-
@HeapOverflow 我编辑了原始帖子以显示两个实例。
-
我仍然没有真正看到测试数据。我看到一堆代码(不清楚是否正确),但我并没有真正看到输入数据是什么,期望的输出数据是什么。
标签: python