2

私は次のデータを持っています

a= [1 1.1 1.2 1.3 1.4 1.5]

私がやりたいことは、このデータの各値に対して、10% の間隔で一連のポイントを増分で生成することです。新しいアレイの作成:

b=  [[0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0], [0 0.11 ... 1.1],.....]

次にやりたいことは、リスト 1 から各数値を取得し、別の値 (2 など) から増分数 (20% の間隔) を決定して、別の配列を取得することです。

c=[[1 1.2 1.4. 1.6 1.8 2.0], [1.1 ..... 2.0],......]

次に、これらの配列を結合します。

  d =[[0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1 1.2 1.4. 1.6 1.8 2.0], [0 0.11 ... 2.0],.....]

リスト 1 は方程式から決定されますが、この場合は値が 2 になる特定のポイントまで、さらに計算を実行したいと考えています。

何かが機能するか、または一連の数字を生成する他の方法はありますか? これは可能ですか?

4

1 に答える 1

1

リスト内包表記を混在np.linspaceさせると、非常に簡単です。

>>> a = [1, 1.1, 1.2, 1.3, 1.4, 1.5]

>>> b = [np.linspace(0, j, 11) for j in a]
>>> b
[array([ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9,  1. ]),
 array([ 0.  ,  0.11,  0.22,  0.33,  0.44,  0.55,  0.66,  0.77,  0.88,  0.99,
         1.1 ]),
 ...
 array([ 0.  ,  0.15,  0.3 ,  0.45,  0.6 ,  0.75,  0.9 ,  1.05,  1.2 ,  1.35,
         1.5 ])]

>>> c = [np.linspace(j, 2, 6) for j in a]
>>> c
[array([ 1. ,  1.2,  1.4,  1.6,  1.8,  2. ]),
 array([ 1.1 ,  1.28,  1.46,  1.64,  1.82,  2.  ]),
 ...
 array([ 1.5,  1.6,  1.7,  1.8,  1.9,  2. ])]

cそれらを連結するには、 のすべての配列の最初の要素または のすべての配列の最後の要素を削除する必要がありますb。連結のみが必要な場合は、c上記のように保ち、次のことを行うことをお勧めします。

>>> b = [np.linspace(0, j, 10, endpoint=False) for j in a]

>>> d = map(np.concatenate, zip(b, c))
>>> d
[array([ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9,  1. ,
         1.2,  1.4,  1.6,  1.8,  2. ]),
 array([ 0.  ,  0.11,  0.22,  0.33,  0.44,  0.55,  0.66,  0.77,  0.88,
         0.99,  1.1 ,  1.28,  1.46,  1.64,  1.82,  2.  ]),
 ...
 array([ 0.  ,  0.15,  0.3 ,  0.45,  0.6 ,  0.75,  0.9 ,  1.05,  1.2 ,
         1.35,  1.5 ,  1.6 ,  1.7 ,  1.8 ,  1.9 ,  2.  ])]

numpy 配列の代わりにリストが必要な場合は、いつでも final を実行できます

>>> d = map(list, d)
于 2013-03-05T01:26:51.140 に答える