2017-10-27 8 views
-1

저는 파이썬에서 gambit을 사용하여 게임 이론 방식으로 세계를 시뮬레이션하고 있습니다. 겜비 트 (gambit)의 한 가지 구성 요소는 각 플레이어가 참여한 일련의 결정에 대한 "결과"를 저장하는 것입니다.ndarray에서 가능한 모든 값을 numpy로 생성 하시겠습니까?

game[d1,d2,d3,...,dn][n] = payoff d1는 플레이어 (1)에 의한 결정의 인덱스

, d2는 플레이어 (2)에 의해 이루어지는 결정의 지표 인, 등등과 n 플레이어 용의 인덱스 : 이는 형태 인 payoff이 저장되어 있습니다. 이제

,이 플레이어의 다양한 수있을 수 있으므로 game 객체에 전달 된 인덱스의 크기가 [8,8,...,8]을 통해 내가 [0,0,...,0]에서 시리즈를 생성 어떻게

을 변경할 수 있습니다 (플레이어의 크기 = 수 = N) 내가 그들을 [d1,d2,d3,...,dn]에 저장할 수 있도록?

+0

필요한 것을 분명히 밝히지 않았습니다. [0,0,0,0, ...]과 [n, n, n, n, ...] 사이의 모든 조합 (순열?)을 개별적으로 생성하고 싶습니다. 길이는 각각 n '? 아니면 물건을 아프려면 모양 배열 (n, n, n)이 필요합니까? 두 명의 플레이어가 원하는 최소한의 예를 보여줄 수 있습니까? 가능한 결정의 차원에 대한 차원이 있습니까? – wwii

+0

@wwii 인덱스의 차원 (길이?)이 n 인 [0,0,0, ..., 0]과 [8,8,8, ..., 8] 사이의 모든 순열을 생성하고 싶습니다. 동적으로 n 값을 기반으로이 작업을 수행해야합니다. –

+1

'n'의 크기는 어느 정도입니까? 'n'이 아주 작지 않으면, 조합의 총 수가 많은 RAM을 씹을 것입니다. BTW, 그 종류의 조합을 데카르트 제품이라고합니다. 평범한 파이썬에서는'itertools.product'로 생성합니다. Numpy에서 데카르트 제품을 만드는 방법에는 여러 가지가 있습니다. –

답변

0

파이썬의 itertools 모듈을 살펴보십시오. product 기능이 원하는대로 작동하는 것 같습니다.

예 :

import itertools as it 
list(it.product(*[range(2)]*3)) 

는 두 가지 요소

[(0, 0, 0), 
(0, 0, 1), 
(0, 1, 0), 
(0, 1, 1), 
(1, 0, 0), 
(1, 0, 1), 
(1, 1, 0), 
(1, 1, 1)] 

itertools 다른 많은 가능성이있다와 길이 세의 모든 목록을 제공합니다, 특히 그것은 또한 permutationscombinations을 제공합니다.