지정하십시오. 효율적인 (아마도 함께 벡터화된 Matlab 용어) 의 비중이 제로 및 sys_memsize 특정 수준들과 난수 생성 방법은? 특별히 함께 누마피?
내 비유하사 1/3 로 대한 특수 ',' 내 코드:
import numpy as np
a=np.mod(np.multiply(np.random.randomintegers(0,2,size)),3)
하지만 이 기능을 처리할 수 있는 내장현 유지됩니까 페시엔틀리 상황에 대한 더 이상의 자연수 N 이 K 와 K / N '어디서'?
간단한 방법으로 생성할 수 있는 '1' 이 약간만이라도 노다레이 비중이 제로 및 수준들과 운영까지도:
>>> import numpy as np
>>> N = 100
>>> K = 30 # K zeros, N-K ones
>>> arr = np.array([0] * K + [1] * (N-K))
>>> arr
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1])
그런 다음 그냥 '유통' 이 어레이에는 무순서 userdic. 무순서:
>>> np.random.shuffle(arr)
>>> arr
array([1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0,
1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1,
1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1,
0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1,
1, 1, 1, 0, 1, 1, 1, 1])
참고로 이 외곽진입 부여하느뇨 정확한 비율에 있습니다 의 제로 / 수준들과 달리 요청한 말하도다 외곽진입 이항 증명. # 39, t need don& 경우 정확한 비율을 사용할 경우, 오일러 외곽진입 그냥 그랬다고.
만약 내가 도움을 줄 수 있으나, 문제를 정확히 파악할 수 있는 [누마피.란도메이휴슈플] (http://docs.scipy.org/doc/numpy/reference/generated/numpy.random.shuffle.html)
>>> def rand_bin_array(K, N):
arr = np.zeros(N)
arr[:K] = 1
np.random.shuffle(arr)
return arr
>>> rand_bin_array(5,15)
array([ 0., 1., 0., 1., 1., 1., 0., 0., 0., 1., 0., 0., 0.,
0., 0.])
간단한 한 줄 광고문: 정수 및 확률 분포를 사용하여 피할 수 있습니다, 즉 열거합니다 및 오버킬 직관적이지 않은 것만으로도 이 문제에 대한 내 의견으로는 변환한 후 필요한 경우 int '작업' 부울 최초의 ' (단, 이를 두고' 부울 '어레이입니다 노력해야 할 대부분의 경우).
>>> import numpy as np
>>> np.random.random(9) < 1/3.
array([False, True, True, True, True, False, False, False, False])
>>> (np.random.random(9) < 1/3.).astype(int)
array([0, 0, 0, 0, 0, 1, 0, 0, 1])
또 다른 방법을 사용해야 하는 정확한 수를 사용하여 인덱스 '는 수준들과 및 제로는 샘플링하려면 교체 없이 np.란도맥컬리스':
arr_len = 30
num_ones = 8
arr = np.zeros(arr_len, dtype=int)
idx = np.random.choice(range(arr_len), num_ones, replace=False)
arr[idx] = 1
아웃해야:
arr
array([0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1,
0, 0, 0, 0, 0, 1, 0, 0])