标签: cartesian-product

获取一系列列表的笛卡尔积?

如何从一组列表中获取笛卡尔积(每种可能的值组合)?

输入:

somelists = [
   [1, 2, 3],
   ['a', 'b'],
   [4, 5]
]
Run Code Online (Sandbox Code Playgroud)

期望的输出:

[(1, 'a', 4), (1, 'a', 5), (1, 'b', 4), (1, 'b', 5), (2, 'a', 4), (2, 'a', 5) ...]
Run Code Online (Sandbox Code Playgroud)

python list cartesian-product

289
推荐指数
9
解决办法
18万
查看次数

Numpy:x和y数组的笛卡尔积指向单个2D点阵列

我有两个numpy数组,定义网格的x和y轴.例如:

x = numpy.array([1,2,3])
y = numpy.array([4,5])
Run Code Online (Sandbox Code Playgroud)

我想生成这些数组的笛卡尔积来生成:

array([[1,4],[2,4],[3,4],[1,5],[2,5],[3,5]])
Run Code Online (Sandbox Code Playgroud)

在某种程度上,由于我需要在循环中多次执行此操作,因此效率不高.我假设将它们转换为Python列表并使用itertools.product并返回到numpy数组并不是最有效的形式.

python numpy cartesian-product

134
推荐指数
8
解决办法
5万
查看次数

生成所有可能的组合

给定2个数组Array1 = {a,b,c...n},Array2 = {10,20,15....x}如何生成所有可能的组合作为字符串a(i)b(j)c(k)n(p) 其中

1 <= i <= 10,  1 <= j <= 20 , 1 <= k <= 15,  .... 1 <= p <= x
Run Code Online (Sandbox Code Playgroud)

如:

a1 b1 c1 .... n1  
a1 b1 c1..... n2  
......  
......  
a10 b20 c15 nx (last combination)
Run Code Online (Sandbox Code Playgroud)

所以在所有组合的总数=元素的产品 array2 = (10 X 20 X 15 X ..X x)

类似于笛卡尔积,其中第二个数组定义第一个数组中每个元素的上限.

固定数字的示例,

    Array x =  [a,b,c]
    Array y =  [3,2,4] 
Run Code Online (Sandbox Code Playgroud)

所以我们将有3*2*4 = 24种组合.结果应该是:

    a1 b1 c1  
    a1 b1 …
Run Code Online (Sandbox Code Playgroud)

c# combinatorics cartesian-product

66
推荐指数
4
解决办法
4万
查看次数

Haskell中2个列表的笛卡尔积

我希望在Haskell中生成2个列表的笛卡尔积,但我无法弄清楚如何做到这一点.笛卡尔积给出了列表元素的所有组合:

xs = [1,2,3]
ys = [4,5,6]

cartProd :: [a] -> [b] -> [(a,b)]
cartProd xs ys ==> [(1,4),(1,5),(1,6),(2,4),(2,5),(2,6),(3,4),(3,5),(3,6)]
Run Code Online (Sandbox Code Playgroud)

这不是一个实际的家庭作业问题,与任何此类问题无关,但解决这个问题的方式可能有助于我坚持下去.

haskell combinatorics cartesian-product

65
推荐指数
10
解决办法
3万
查看次数

有没有一个很好的LINQ方式来做笛卡尔积?

我有这样的类结构:

Person
Dogs (dog 1, dog 2, etc)
Puppies (puppy A, puppy B, etc)
Run Code Online (Sandbox Code Playgroud)

有一个人.他有1只狗.每只狗有1只小狗.

我想列出所有可能的小狗组合,从每只狗中取一只小狗.例如:

狗1小狗A,狗2小狗狗1小狗A,狗2小狗B狗1小狗B,狗2小狗狗1小狗B,小狗2小狗B

如果它是在sql表中,我会做类似以下的事情来"乘以"表:

select * from puppies a, puppies b where a.parent='dog1' and b.parent='dog2'
Run Code Online (Sandbox Code Playgroud)

是否有一些linq-ish方式来做这种事情???

非常感谢

c# sql linq asp.net cartesian-product

56
推荐指数
3
解决办法
2万
查看次数

生成包含取自n个向量的所有元素组合的矩阵

这个问题经常以某种形式出现(例如,见此处此处).所以我认为我会以一般形式呈现它,并提供一个可能供将来参考的答案.

给定任意数量n的可能不同大小的向量,生成一个n列矩阵,其行描述从这些向量中获取的元素的所有组合(笛卡尔积).

例如,

vectors = { [1 2], [3 6 9], [10 20] }
Run Code Online (Sandbox Code Playgroud)

应该给

combs = [ 1     3    10
          1     3    20
          1     6    10
          1     6    20
          1     9    10
          1     9    20
          2     3    10
          2     3    20
          2     6    10
          2     6    20
          2     9    10
          2     9    20 ]
Run Code Online (Sandbox Code Playgroud)

arrays matlab combinations matrix cartesian-product

54
推荐指数
3
解决办法
2万
查看次数

numpy中是否有多维版本的arange/linspace?

我想要一个2d numpy数组(x,y)的列表,其中每个x在{-5,-4.5,-4,-3.5,...,3.5,4,4.5,5}中,并且对于y是相同的.

我可以

x = np.arange(-5, 5.1, 0.5)
y = np.arange(-5, 5.1, 0.5)
Run Code Online (Sandbox Code Playgroud)

然后迭代所有可能的对,但我确信有一个更好的方式......

我希望回来看起来像:

[[-5, -5],
 [-5, -4.5],
 [-5, -4],
 ...
 [5, 5]]
Run Code Online (Sandbox Code Playgroud)

但顺序并不重要.

python numpy cartesian-product

53
推荐指数
5
解决办法
4万
查看次数

使用PHP关联数组查找笛卡尔积

假设我有一个如下所示的数组:

Array
(
    [arm] => Array
        (
            [0] => A
            [1] => B
            [2] => C
        )
    [gender] => Array
        (
            [0] => Female
            [1] => Male
        )
    [location] => Array
        (
            [0] => Vancouver
            [1] => Calgary
        )
)
Run Code Online (Sandbox Code Playgroud)

如何在保留外部关联数组的键并在内部数组中使用它们的同时找到笛卡儿积?算法的结果应该是这样的:

Array
(
    [0] => Array
        (
            [arm] => A
            [gender] => Female
            [location] => Vancouver
        )

    [1] => Array
        (
            [arm] => A
            [gender] => Female
            [location] => Calgary
        )

    [2] => Array
        (
            [arm] => A
            [gender] => …
Run Code Online (Sandbox Code Playgroud)

php algorithm associative-array cartesian-product

48
推荐指数
5
解决办法
2万
查看次数

Java中任意集的笛卡尔积

您是否知道一些简洁的Java库,允许您制作两个(或更多)集的笛卡尔积?

例如:我有三套.一个是Person类的对象,第二个是类Gift的对象,第三个是GiftExtension类的对象.

我想生成一个包含所有可能的三元组Person-Gift-GiftExtension的集合.

集的数量可能会有所不同,所以我不能在嵌套的foreach循环中执行此操作.在某些情况下,我的应用程序需要制作一个Person-Gift对的产品,有时它是三人Person-Gift-GiftExtension,有时甚至可能会设置Person-Gift-GiftExtension-GiftSecondExtension-GiftThirdExtension等.

java cartesian-product

45
推荐指数
5
解决办法
4万
查看次数

Scala中的交叉产品

我希望有一个二进制运算符cross(交叉产品/笛卡尔积)在Scala中使用遍历运算:

val x = Seq(1, 2)
val y = List('hello', 'world', 'bye')
val z = x cross y    # i can chain as many traversables e.g. x cross y cross w etc

assert z == ((1, 'hello'), (1, 'world'), (1, 'bye'), (2, 'hello'), (2, 'world'), (2, 'bye'))
Run Code Online (Sandbox Code Playgroud)

仅在Scala中执行此操作的最佳方法是什么(即不使用scalaz之类的东西)?

functional-programming scala cartesian-product cross-product

45
推荐指数
4
解决办法
2万
查看次数