私は今週numpyを使い始めたばかりで、非常に混乱しています。通常の python 関数とは大きく異なるようです。
1000X6 の形状の配列では、配列内の行ごとに移動し、たとえば正三角形をチェックする方法があります。各行にトリプルがあり、各ポイントに 2 つの整数があるように、6 つの列があります。
import numpy as np
pnts = np.random.randint(0,50,(1000, 6))
また、次のような 3 つの配列を作成する方がよいと考えました。
import numpy as np
A = np.random.random((10,2))
B = np.random.random((10,2))
C = np.random.random((10,2))
順序付きペアを作成し、アルゴリズムを使用して三角形を見つけます。
順序付けられたペアの 1000 個のトリプルを表す配列を作成するより良い方法はありますか?たとえば、正三角形のように、その配列で三角形を見つけるにはどうすればよいですか?
私は今、いくつかの変更を加えました。x 座標と y 座標の 2 つの配列を作成しました。
x = np.random.randint(0,10,(3,1000))
y = np.random.randint(0,10,(3,1000))
############ 質問への追加 ############
各三角形の辺の長さと角度を見つける、一致する各 x 座標と y 座標を取得するアルゴリズムがあります。投稿しますが、コードが多すぎます。また、角度と辺の長さを使用して、不等辺、等辺、右二等辺、および非右二等辺を見つける関数もあります。
私の質問は、インデックスに関連するものになりました。例として再び正三角形を使用します。
E = np.column_stack((ACXY,ABXY,CBXY))
ES = np.logical_and(E[:,0] == E[:,1], E[:,1] == E[:,2])
私は正三角形を見つけるためにこれを持っています。
- ACXY = the distance from point A to C
- ABXY = the distance from point A to B
- CBXY = the distance from point C to B
正三角形であるすべての座標トリプルを取得し、それらにインデックスを付けて、E_Tri という新しい配列に配置できるようにしたいと考えています。ブール値を作成する関数は必要ないと思います。If: else: ステートメントの方が良い方法かもしれないと思いました。
また、これも役立つ場合がありますE = np.column_stack((ACXY,ABXY,CBXY))
。(E) の配列を理解するために表示します。
[[ 4. 4.47213595 7.21110255]
[ 3.60555128 2.23606798 5.83095189]
[ 2.23606798 9.05538514 8.54400375]
...,
[ 3.60555128 9.05538514 6.08276253]
[ 8.94427191 8.54400375 1. ]
[ 10.63014581 1. 10. ]]
Eはそのようになります。うまくいけば、これは理にかなっています。そうでない場合は、私に知らせてください。
質問に追加するだけでは機能しませんが、おそらくこのようなものです。
E = np.column_stack((ACXY,ABXY,CBXY))
equilateral = []
def E_Tri(E):
if E[:,0] == E[:,1] and E[:,1] == E[:,2]:
equilateral.append(E_Tri)
else:
return E