나는 입자 시뮬레이터로 놀고있다. 가능한 한 효율적으로 현실적인 시뮬레이터를 만들기 위해 파이썬과 numpy로 matplotlib를 사용하고 싶다. (이것은 단지 재미있는 연습이다. 파이썬과) 거리의 역수를 계산하는 데 문제가 있습니다.배열의 파이썬/누피 인덱스 배열
I은 너무 유사 입자의 위치 (X, Y)를 포함하는 배열을 가지고
x = random.randint(0,3,10).reshape(5,2)
>>> x
array([[1, 1],
[2, 1],
[2, 2],
[1, 2],
[0, 1]])
이것은 [0,3] 위치에있는 5 개 개의 입자 (x, y)이다. 나는 하나 개의 입자 사이의 거리를 계산하려면 지금 문제는 내가의 거리를 먹고 싶어하지 마십시오되고 나머지는 내가
>>>x - [0,1]
array([[1, 0],
[2, 0],
[2, 1],
[1, 1],
[0, 0]])
같은 것을 할 것 (예를 들어 위치에 입자 (0,1)) 및 입자 자체 : (0,0). 이것은 길이가 0이고 역수는 무한하며 중력이나 coloumb force에 대해 정의되지 않습니다.
그래서 시도 : 여기서 (X == [0,1])는 X 배열에서 (0,1)의 입자의 위치가 아닌>>>where(x==[0,1])
(array([0, 1, 4, 4]), array([1, 1, 0, 1]))
. 그렇다면 어떻게 x와 같은 배열에서 [0,1]의 위치를 고를 수 있습니까? 위의 where()는 x가 0 또는 1과 같은지 확인합니다. 여기서 x는 [0,1]과 같습니다. 반복없이 "numpylike"어떻게해야합니까?
추신 : 어떻게하면 당신은 복사 - 붙여 넣기 코드 stackoverflow에 복사합니까? 나는 나쁜 포럼이 코드를 들여 쓰는 동안 15 분 동안 코드를 들여야하지만 (우분투의 크롬 탭은 단순히 4 개의 공백을 들여 쓰지 않고 창문 밖으로 튀어 나와 있기 때문에) [code] .. [/ code] 매우 짜증나. !하지 나는 = [1,1]없이 배열을 반환해야합니다, 바라던 것입니다
x
array([[0, 2],
[2, 2],
[1, 0],
[2, 2],
[1, 1]])
>>> all(x==[1,1],axis=1)
array([False, False, False, False, True], dtype=bool)
>>> all(x!=[1,1], axis=1)
array([ True, True, False, True, False], dtype=bool)
:
편집 : 나는 시도 첫 번째 대답을보고. 그러나 슬프게도, 그것은 하나의 (1,0) 그리워 :
>>>x[all(x!=[1,1], axis=1)]
array([[0, 2],
[2, 2],
[2, 2]])
Edit2가을 : 어떤 트릭을했다, 그것이 내가 생각하는 모든 것보다 더 논리적 의미가 있습니다, 감사합니다!
코드를 복사하여 붙여 넣기 만하면됩니다. 코드를 선택하고'Ctrl + K '(또는'code' 툴바 버튼)을 눌러 코드로 포맷하십시오. – voithos