2017-11-23 3 views
0

numpyの配列を作成すると、通常は形状が予想通りに変化します。私は何が間違っているのかわからない、正しい方向に私を指してください。例えば既存のndarraysからnumpyのndarraysを作成する

theta = np.random.rand(n , 1)*2 *np.pi 
theta.round(3) 
Out[283]: 
array([[ 0.827], 
     [ 0.951], 
     [ 5.371], 
     [ 0.889]]) 

私は速度(NX2の配列)のためのベクトル成分を持つ配列を作成したいシータから...私はいくつかを試してみましたが、いつもならば動作します間違った形状を得ました私はそれを再形成するが、確かに私はそこにまっすぐに入ることができるはずである。

速度= X = Vの*のCOS(シータ)およびy = V *罪(シータ)は

velocity.reshape(n, 2) 
Out[281]: 
array([[ 1.16966072, -0.22284058], 
     [-0.35621286, 0.7848923 ], 
     [ 0.26813019, -1.17912768], 
     [-1.14591116, 0.90771365]]) 

私はアレイを構築するためのいくつかの方法を試みたxとyの配列。明らかに私はこれを近づけましたが、それほど正しいものではありません。

velocity = np.array((np.cos(theta) * v, np.sin(theta)*v), dtype=float) 

velocity 
Out[279]: 
array([[[ 1.16966072], 
     [-0.22284058], 
     [-0.35621286], 
     [ 0.7848923 ]], 

     [[ 0.26813019], 
     [-1.17912768], 
     [-1.14591116], 
     [ 0.90771365]]]) 

velocity.shape 
Out[280]: (2, 4, 1) 

速度= np.array([np.cos(シータ)* V]、[np.sin(シータ)* V]、DTYPE =フロート)

velocity 
Out[274]: 
array([[[[ 1.16966072], 
     [-0.22284058], 
     [-0.35621286], 
     [ 0.7848923 ]]], 


     [[[ 0.26813019], 
     [-1.17912768], 
     [-1.14591116], 
     [ 0.90771365]]]]) 

velocity.shape 
Out[275]: (2, 1, 4, 1) 


velocity = np.dstack((np.cos(theta) * v, np.sin(theta)*v)) 

velocity 
Out[268]: 
array([[[ 1.16966072, 0.26813019]], 

     [[-0.22284058, -1.17912768]], 

     [[-0.35621286, -1.14591116]], 

     [[ 0.7848923 , 0.90771365]]]) 

velocity.shape 
Out[269]: (4, 1, 2) 
+0

正確に何が出力されるべきですか? –

+0

velocity.reshape(n、2)..意味的に、極座標vとシータを与えられた速度のxとy成分の配列。 –

+0

'np.c_ [np.cos(theta)* v、np.sin(theta)* v]'はどうですか? –

答えて

0

thetaあります(n,1)

np.array([theta, theta])は、(2, n, 1)である。すなわちnp.arrayは、新たな軸に沿って、したがって初期2.

np.array([[theta], [theta]])ラップ2つの成分アレイを結合する、である[] , so each is(1、nは、1), and together(2,1、nは、1) `の各theta

(n、2)が必要な場合は、2番目の軸で連結する必要があります。たとえば:

velocity = np.concatenate([np.cos(theta) * v, np.sin(theta)*v], axis=1) 

hstackcolumn_stackも同様c_として、これを行うだろう。 、stackは新しい第二軸にそれらを結合するために使用されている可能性がtheta(代わりに2の1D)(n,)としてあなたが作成した場合

:(2、n)を作る

velocity = np.stack([np.cos(theta) * v, np.sin(theta)*v], axis=1) 

またはnp.array([...]).T、すなわちそれを転置します。

2つのn要素配列を(n、2)配列に結合する方法はたくさんあります。 np.squeeze(np.array(....)).Tでも、(2、n、1)から1を取り除く。

+0

ありがとうございます。消化するにはたくさん。シータを(n、)としてどのように作成するのですか? @BlueShrapnel; –

+0

; '(n、)としてシータを作るにはどうすればいいですか?'、あなたの投稿に 'シータ' **は(n、1)の形をしています。 – wwii

+0

ありがとう@hpaulj、それは私の考えをクリアするのに役立ちました、私はもう1つを指定して2次元配列を作成していたことに気づいていませんでした。数学では、nx1配列はn行の単なる列です。シータ= np.random(n) –

関連する問題