问题标签 [set-operations]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - 当返回 2 个输出值时,它应该显示硬线输出值,如果返回 1 个输出值,它应该显示 1 个输出本身
当我对输入参数执行查询时,ABC
它返回两个值(Partner, Smith)
;每当返回这两个值中的两个值时,Smith 将是一个强制值,该值将被返回。
但是每当使用输入参数执行相同的查询时,'xyz'
它只返回一个值。
现在我的要求是,每当我执行查询时,如果它返回这两个值中的两个值,则必须在输出中返回 SMITH,如果相同的查询返回一个输出值,那么它应该显示该loutput
值本身。
下面的查询满足我的要求的第一部分,但它不满足我的要求的第二部分。1output
只要输出值数量为 1,它就会返回“空”值,而不是显示值。
algorithm - 从至少两个元素相等的列表中查找所有最大的子列表
给定一个对象列表和一个非传递相等函数,当两个对象相等时返回 true,否则返回 false,我需要找到至少两个对象相等的所有最大子列表。例如 -
和,
结果将是:
请注意,isEqual 是不可传递的,即在上述情况下,即使它们属于同一个子列表,它们o1
也可能不等于。o4
sql - “设置操作”是否具有规定的执行顺序,或者它们是否按评估顺序执行?
集合操作是否有规定的执行顺序(例如,首先是 UNION,然后是 MINUS,然后是 INTERSECT),还是按照脚本和评估的顺序执行?
例如,假设我想要一个 customer_ids 的起始队列,然后删除一些,然后再添加一些。集合运算符是否会在此处执行为 Qry 1 减去 Qry 2 并合并 Qry 3?
c - 如何使用内置库在 C 程序中执行 AB 集操作
我是 C 语言的新手。假设我有两个数组a
和b
我想执行a-b
,以便我可以获得 arraya
中不存在的所有元素 array b
。在 ruby 或 python 中,我可以简单地做a-b
并得到结果。这是我尝试过的 c 代码,但我的代码不起作用。我正在寻找一个 C 库,它可以为我在一行中执行此操作。我也找到了这个库,但不知道如何实现它。任何形式的帮助表示赞赏。
sql - 如何在 PostgreSQL 中有效地设置减去连接表?
我有以下表格:
work_units
- 自我解释workers
- 自我解释skills
- 如果你想工作,每个工作单元都需要一些技能。每个工人都精通多种技能。work_units_skills
- 连接表workers_skills
- 连接表
工作人员可以请求分配给她的下一个适当的空闲最高优先级(无论这意味着什么)工作单元。
目前我有:
不过,这种情况会使查询慢 8-10 倍。
有没有更好的方法来表达 awork_units
的技能应该是 s 技能的子集workers
或改进当前查询的东西?
更多上下文:
skills
桌子相当小。- 两者
work_units
并且workers
往往具有很少的相关技能。 work_units_skills
有索引work_unit_id
。- 我尝试将查询
workers_skills
移至 CTE。这带来了轻微的改善(10-15%),但仍然太慢了。 - 任何用户都可以拾取没有技能的工作单元。又名空集是每个集合的子集。
c++ - 为什么类型推导对我的集合交集和集合差异调用不起作用?
我正在尝试编写一个小算法来查找两组的共同和独特部分,并且我想以通用方式编写它,所以我有这个小例子:
我的问题是为什么这个函数无法编译?我尝试了 gcc、clang 和 MSVC,但都失败了。可以在此处查看 Clang 的错误消息:
https ://godbolt.org/g/gFZyzo
非常感谢。
python - numpy 中的高效 bin 分配
我有一个非常大的 1D python 数组x
,其中有些重复的数字以及一些d
相同大小的数据。
在我的上下文中,“非常大”是指 10k...100k 条目。其中一些是重复的,因此唯一条目的数量约为 5k...15k。
我想将它们分组到垃圾箱中。这应该通过创建两个对象来完成。一个是矩阵缓冲区,b
数据项取自 d。另一个对象是v
每个缓冲区列引用的唯一 x 值向量。这是示例:
由于 x 中每个唯一数字的出现次数不同,缓冲区 b 中的一些值是无效的(由大写字母表示X
,即“不关心”)。
在 numpy 中很容易推导出 v:
我们甚至得到n
b 中每列中有效条目的数量。此外,(np.max(n), v.shape[0])
返回需要分配的矩阵 b 的形状。
但是如何有效地生成 b?一个 for 循环可能会有所帮助
此循环遍历 b 的所有列,并idx
通过识别 的所有位置来提取索引x == v
。
但是我不喜欢这个解决方案,因为 for 循环相当慢(比唯一命令长约 50 倍)。我宁愿将操作矢量化。
因此,一种矢量化方法是创建一个索引矩阵,x == v
然后nonzero()
在其上沿列运行命令。但是,此矩阵需要 150k x 15k 范围内的内存,因此在 32 位系统上大约需要 8GB。
np.unique
对我来说, -操作甚至可以有效地返回倒排索引听起来很愚蠢,x = v[inv_indices]
但是没有办法为 v 中的每个 bin 获取 v-to-x 分配列表。当函数时,这应该几乎是免费的正在扫描 x。在实现方面,唯一的挑战是生成的索引矩阵的未知大小。
假设 np.unique-command 是用于分箱的方法,则另一种表述这个问题的方法:
给定三个数组x, v, inv_indices
中v
的唯一元素,x
是否x = v[inv_indices]
有一种有效的方法来生成索引向量v_to_x[i]
,all(v[i] == x[v_to_x[i]])
以便所有 bin i
?
我不应该花费比 np.unique-command 本身更多的时间。我很高兴为每个箱子中的物品数量提供一个上限(例如 50 个)。
mysql - MySQL --- 在同一张表上设置操作 MINUS 和 INTERSECT
我们需要跟踪随时间变化的集合成员。我可以用下面的简单表格来解释我们的问题:
SELECT * 操作的结果如下:
从逻辑上讲,我们可以使用 SET 操作 MINUS 和 INTERSECT 来了解在一段时间内添加、删除或保留了哪些成员。例如,以下“逻辑”集合操作给出了在 20150101 和 20180101 之间添加的成员数:
同样,以下“逻辑”集合操作给出了在 20150101 和 20180101 之间删除的成员数:
以下“逻辑”集合操作给出了 20150101 和 20180101 之间保留的成员数:
在 MySQL 中实现这些逻辑集合操作的最优雅的方式是什么?
r - 使用 sets 包对 R 中的集合列表进行集合操作
我sets
在 R 中使用包。现在,我有一个集合列表,我想在列表上执行集合操作而不必循环。就像,我可以set_intersection
使用可变数量的参数
但是如果我有一个类似的列表怎么办
如何取中包含的所有集合的交集ls
?试图谷歌它,但找不到太多。
python - 如何获得两个以上列表的对称差异?
我想在我的所有列表之间获取所有专有元素。因此,如果我有 3 个列表,例如:
我的输出应该是:
我尝试对所有列表进行对称差分,例如:
但这并不好。
我也试过:
这与第一种方法的工作原理相同,但它不会产生我想要的东西。
然后我试了一下(set(list1) ^ set(list2)) ^ (set(list2) ^ (set(list3))
,发现和我第一次试的不太一样。
编辑:
我以 3 个列表为例,但函数采用未定义数量的参数