은이 같은 동적 배열의 값에 따라 NumPy와 함께 2-D 행렬을 만들려고 :numpy 행렬을 배열 값에서 동적으로 채 웁니까?
In [113]: A = np.zeros((5,5),dtype=bool)
In [114]: A
Out[114]: array([[False, False, False, False, False],
[False, False, False, False, False],
[False, False, False, False, False],
[False, False, False, False, False],
[False, False, False, False, False]], dtype=bool)
In [116]: B = np.array([0,1,3,0,2])
In [117]: B
Out[117]: array([0, 1, 3, 0, 2])
해주기, I는 상기 제를 할당 B의 값을 사용하려는 각 행의 n 값은 A에서 참으로. 이것은 A 및 B의 경우, 올바른 출력 될 것이다 :
In [118]: A
Out[118]: array([[False, False, False, False, False],
[ True, False, False, False, False],
[ True, True, True, False, False],
[False, False, False, False, False],
[ True, True, False, False, False]], dtype=bool)
B의 길이는의 행의 개수와 동일 항상되고, B의 값은 항상의 수보다 적거나 동일 할 것이다 A의 열과 B의 값은 끊임없이 변하기 때문에 나는 이것을 비행 중에 만들어야합니다.
나는 이것에 numpy의 단순한 (-ish) 해결책이 있다고 확신하지만, 지난 시간을 반복, 타일 및 내가 생각할 수있는 다른 변형에 대해 머리를 치는 데 보냈습니다. 내가 뇌진탕을 내기 전에 누군가가 나를 도울 수 있습니까? :)
편집 :이 작업을 많이해야하므로 속도가 문제가됩니다. 내가 지금 가지고 올 수있는 유일한 버전은 같은 것입니다 :
np.vstack([ [True]*x + [False]*(500-x) for x in B ])
하지만 난이 (내가 그것을 비교하는 것도이 있다면 내가 시간이 것)에 의한 루프의 느린 될 것으로 기대합니다.
달콤한 크리스마스 [
(np.arange(len(A[0]))[:,None] < B).T
에서 단순화. 우리가B
을 확장하는 경우와하지A
, 트랜스에 대한 필요가 없습니다, 그것은 좋은! 그리고 너무 빨리 ... 감사합니다! – Winawer실제로'A'를 빌드 할 필요는 없다는 것을 유의하십시오. 필요한 것은'len (A [0])'과'B'입니다. – DSM