标签: cartesian-product

从两个大列表的笛卡尔积创建 pandas DataFrame

我正在寻找从另外两个数据框架创建数据框架的最简单方法,以便它包含其元素的所有组合。例如我们有这两个数据框:

list1 = ["A", "B", "C", "D", "E"]
list2 = ["x1", "x2", "x3", "x4", "x5", "x6", "x7", "x8"]

df1 = pd.DataFrame(list1)
df2 = pd.DataFrame(list2)
Run Code Online (Sandbox Code Playgroud)

结果必须是:

   0   1
0  A  x1
1  A  x2
2  A  x3
3  A  x4
4  A  x5
5  A  x6
6  A  x7
7  A  x8
8  B  x1
9  B  x2
Run Code Online (Sandbox Code Playgroud)

我尝试从列表中进行组合,它适用于小列表,但不适用于大列表。谢谢

python cartesian-product dataframe pandas

2
推荐指数
1
解决办法
1945
查看次数

Python 中单个列表上的 n 重笛卡尔积

如何在Python中以优雅(简洁)的方式计算列表上的n次笛卡尔积,即A \xc3\x97 ... \xc3\x97 A(n次)?

\n

例子:

\n
>>> l = ["a", "b", "c"]\n>>> cart_prod(l, 0)\n[]\n>>> cart_prod(l, 1)\n[(\'a\',), (\'b\',), (\'c\',)]\n>>> cart_prod(l, 2)\n[(\'a\', \'a\'), (\'a\', \'b\'), (\'a\', \'c\'), (\'b\', \'a\'), (\'b\', \'b\'), (\'b\', \'c\'), (\'c\', \'a\'), (\'c\', \'b\'), (\'c\', \'c\')]\n>>> cart_prod(l, 3)\n[(\'a\', \'a\', \'a\'), (\'a\', \'a\', \'b\'), (\'a\', \'a\', \'c\'), (\'a\', \'b\', \'a\'), (\'a\', \'b\', \'b\'), (\'a\', \'b\', \'c\'), (\'a\', \'c\', \'a\'), (\'a\', \'c\', \'b\'), (\'a\', \'c\', \'c\'),\n (\'b\', \'a\', \'a\'), (\'b\', \'a\', \'b\'), (\'b\', \'a\', \'c\'), (\'b\', \'b\', \'a\'), (\'b\', …
Run Code Online (Sandbox Code Playgroud)

python cartesian-product

2
推荐指数
1
解决办法
2055
查看次数

形成两个字符串列表的笛卡尔积的最 Pythonic 方法

我有两个字符串列表:

l1 = ["Col1", "Col2", "Col3"]
l2 = ["_ad1", "_ad2"]
Run Code Online (Sandbox Code Playgroud)

我想将两个列表l1x的笛卡尔积/串联l2成一个元素,即我想要的结果是:

["Col1_ad1", "Col1_ad2", "Col2_ad1", "Col2_ad2", "Col3_ad1", "Col1_ad1"]
Run Code Online (Sandbox Code Playgroud)

当然我可以这样做:

result = []
for colname in l1:
    for suffix in l2:
        result.append(f"{colname}{suffix}")
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有更Pythonic的方式?

编辑:我并不是在寻找一种更Pythonic的方式来制定循环(即列表理解)。相反,我正在寻找一个内置函数,类似的函数 concatenate(l1, l2)会产生所需的结果

python string list concatenation cartesian-product

2
推荐指数
1
解决办法
106
查看次数

如何在 Julia 中对可变数量的列表进行笛卡尔积?

对于集合 {1, 2, ..., n} 中的每个值 j,其中 n 的值可以变化(它是我的程序中的某个变量,可以根据用户的输入而不同),我有一个数组A_j。我想获得所有数组 A_j 的笛卡尔积,以便我可以迭代该笛卡尔积(从每个 A_1、A_2、... A_n 中取出一个元素以获得一个元组 (a_1、a_2、... , a_n) 在 A_1 x A_2 x ... x A_n) 中。我将如何在 Julia 中实现这一目标?

arrays cartesian-product julia

2
推荐指数
1
解决办法
475
查看次数

如何使用 C++ Cuda 高效地实现并行笛卡尔积

我有两个数组 A 和 B,分别有 m 和 n int 变量。我有一个函数 f,我想生成所有 f(a, b),其中 a 在 A 中,b 在 B 中:

A = {a1, a2, a3, ...., am}
B = {b1, b2, b3, ...., bn}

C = f(A * B) = {f(a1,b1), f(a1,b2), f(a1,b3), ..., f(a1, bn),
                f(a2,b1), f(a2,b2), f(a1,b3), ..., f(a2, bn),
                ...
                f(am,b1), f(am,b2), f(am,b3), ..., f(am, bn)}
Run Code Online (Sandbox Code Playgroud)

更准确地说,我的函数 f 是数字之间的简单按位或,但我想一般性地问它。此外,结果中项目的顺序并不重要。我只想从 A 和 B 生成所有可能的对。

由于我需要生成并存储结果,如何有效地实现它(使用C++ Cuda)以减少访问全局内存的次数?我需要使用共享内存吗?

任何建议将不胜感激。

c++ cuda cartesian-product

2
推荐指数
1
解决办法
220
查看次数

Shapeless 的“分配财产”

不确定正确的术语是否是“分配财产”,但我记得在学校学过这个,所以这里是我想做的一个例子:

鉴于:

type MyHList = (A :+: B :+: C :+: CNil) :: (Foo :+: Bar :+: CNil) :: HNil
Run Code Online (Sandbox Code Playgroud)

Shapeless 中是否有任何内置类型类可以解决这个问题:

type Out = (A, Foo) :+: (A, Bar) :+: (B, Foo) :+: (B, Bar) :+: (C, Foo) :+: (C, Bar) :+: CNil
Run Code Online (Sandbox Code Playgroud)

谢谢

scala cartesian-product hlist shapeless coproduct

2
推荐指数
1
解决办法
96
查看次数

复制迭代器并生成无序自笛产品

假设我有一个列表,我想生成所有唯一元素对的列表,而不考虑订单.一种方法是:

mylist = ['W','X','Y','Z']
for i in xrange(len(mylist)):
    for j in xrange(i+1,len(mylist)):
        print mylist[i],mylist[j]
W X
W Y
W Z
X Y
X Z
Y Z
Run Code Online (Sandbox Code Playgroud)

我想用迭代器做这个,我想到了以下内容,即使它没有简洁:

import copy
it1 = iter(mylist)
for a in it1:
    it2 = copy.copy(it1)
    for b in it2:
        print a,b
Run Code Online (Sandbox Code Playgroud)

但这甚至都行不通.什么是更加pythonic和有效的方式,使用迭代器或zip等?

python iterator list cartesian-product

1
推荐指数
1
解决办法
668
查看次数

笛卡尔积和WHERE子句问题

我们有简单的表格:

CREATE TABLE dbo.test
(
    c1  INT
)

INSERT INTO test (c1) VALUES (1)
INSERT INTO test (c1) VALUES (2)
INSERT INTO test (c1) VALUES (3)
Run Code Online (Sandbox Code Playgroud)

接下来计算一些SUM:

SELECT SUM(t1.c1) FROM test AS t1 , test AS t2
WHERE t2.c1 = 1
Run Code Online (Sandbox Code Playgroud)

输出为:6.简单易行.

但如果我跑:

SELECT SUM(t1.c1), * FROM test AS t1 , test AS t2
WHERE t2.c1 = 1
Run Code Online (Sandbox Code Playgroud)

输出是:

6   2   2
6   2   3
6   2   1
6   3   2
6   3   3
6   3   1
6   1   2 …
Run Code Online (Sandbox Code Playgroud)

sql t-sql cartesian-product sybase-ase

1
推荐指数
1
解决办法
1013
查看次数

2个笛卡儿积分在python中

你知道如何在python中循环100和200的笛卡尔积,例如:

for cartesian(100,200):
 print result

1,1
1,2
.
.
.
123,197
.
.
100,200
Run Code Online (Sandbox Code Playgroud)

python cartesian-product

1
推荐指数
2
解决办法
2301
查看次数

Haskell中数据类型的笛卡尔积

试图将两种数据类型的笛卡尔积产品放入一个列表中:

 data X = hello | goodbye | hi 
      deriving (ord, enum, eq, show)
 data Y = hello | goodbye | hi 
      deriving (ord, enum, eq, show)

 compList :: [a]
 compList = [(x, y) | x <- X, y <- Y]
Run Code Online (Sandbox Code Playgroud)

显然x < - X等目前不起作用,我只是想知道你们怎么会这样做?

干杯.

haskell list-comprehension cartesian-product

1
推荐指数
1
解决办法
248
查看次数