0

私は最近 NumPy を使い始めました (これまでのところ本当に便利です。なぜもっと早く使い始めなかったのでしょうか?) が、私が間違っていると確信していることがまだいくつかあります:

  • ベクトル (ndarray) に関数を適用するにはどうすればよいですか? 私はそれをベクトル化したいのですが、それは単なる乗算よりも複雑な機能です。を使用してみましnp.whereたが、それは醜い解決策のようです (また、ベクトル化されているかどうかもわかりません)。私の関数がベクトル化されるように map に似た関数はありますか?

  • 2 次元配列 (2 次元位置ベクトルの配列) があるとします。各ベクトルのノルムを見つけたいとします。それが特定の値を超えている場合は、何でもします。np.whereこれに対する優れた解決策のようですが、配列を転置しない限り機能しません:(np.where(sum(a.T**2) > 10, a * 2, 0)単なる任意の例)。これは本当に冗長に見え、転置はあまり意味がありません。

  • 最後に、3 次元配列がある場合 - 2d 位置ベクトルの 2 次元配列 (位置 [1, 2] がベクトル (1, 2) になるように)。(np.where などのベクトル化された関数を使用して) すべてのベクトルを反復処理するにはどうすればよいですか? を使ってきましたがnp.reshape、できれば配列を同じ形にしたいです。

これらの質問は似ているように見えるためまとめましたが、別のスレッドに分割する必要がある場合はお知らせください。

4

1 に答える 1

0

上記のコメントのように、あなたが何を求めているのかよくわかりません。しかし、最初の質問については、次の例を見てください。

2 次元ベクトルの numpy 配列があり、各ベクトルのノルムを計算したいとします。次のようなことはできませんでした:

import numpy as np

x = np.arange(20).reshape(10,2)
norm_func = lambda z: sum(z**2)
norm_func(x.T)

これは結果を与えるでしょう

array([ 1,  5,  9, 13, 17, 21, 25, 29, 33, 37])

アレイ用

array([[ 0,  1],
       [ 2,  3],
       [ 4,  5],
       [ 6,  7],
       [ 8,  9],
       [10, 11],
       [12, 13],
       [14, 15],
       [16, 17],
       [18, 19]])
于 2013-06-25T17:52:13.520 に答える