【发布时间】:2019-10-24 18:10:33
【问题描述】:
我有一个数组,其中包含一位小数。小数点只能是 1、2 或 3(由用户设置,因此不必是算法)。我想创建一个函数来排除数组中不包含所有三个小数的元素。
例如,当考虑以下数组并预期输出时:
a = np.array([1.1, 1.3, 1.2, 2.1, 2.2])
b = np.array([1.3, 1.2, 1.1, 7.3, 7.1, 8.1, 8.2, 8.3])
#desired output
a_usefull = [1.1, 1.3, 1.2]
b_usebull = [1.3, 1.2, 1.1, 8.1, 8.2, 8.3]
a 中的 元素 2.1 和 2.2 被排除在外,因为两者都缺少小数点 0.3。元素 7.3 和 7.1 被排除在外,因为缺少十进制 .2。请注意,原始数组的顺序是导入的,因此例如 [1.3, 1.1, 1.2] 应该以 [1.3, 1.1, 1.2] 出现
另一个条件是,例如[1.1, 1.3, 2.1, 2.2, 1.2, 2.3] 的输出应该与它所看到的完全一样。因此,例如它是 [1,1,2,1,2,2] 它不应该是 [1,1,1,2,2,2]。顺序不应该改变。
我想先计算数组中的所有元素并计算它们。但是,代码应该在函数中给出。有人可以帮助这个循环吗?
def remove(id):
return useful_elements
谢谢!
【问题讨论】:
-
有点丑但是
[k for k in a if all((int(k) + 0.1*i) in a for i in range(1, 4))] -
它们总是按照 x.1、x.2、x.3 的顺序排列吗?
-
是的,输出数组的顺序应该与原始数组相同。不过,小数不需要按相同的顺序排列。 [2.3, 2.1, 2.2] 没问题。
-
在这种情况下,您可以创建十进制列表并检查该十进制列表是否是您的输入列表@vectorizinglife 的子列表,该列表也将按顺序排列您的小数,以及您的整数部分下单查看我的答案
-
@vectorizinglife 我的意思是在原始列表中,数字总是按这个顺序排列吗?
标签: python arrays for-loop while-loop