質問を完全に理解しているかどうかはわかりませんが、このようなものが役立つでしょうか?
def square(x):
if 'numpy' in str(type(x)):
return np.square(x)
else:
if isinstance(x, list):
return list(np.square(x))
if isinstance(x, int):
return int(np.square(x))
if isinstance(x, float):
return float(np.square(x))
私はいくつかのテストケースを定義した:
np_array_one = np.array([3.4])
np_array_mult = np.array([3.4, 2, 6])
int_ = 5
list_int = [2, 4, 2.9]
float_ = float(5.3)
list_float = [float(4.5), float(9.1), float(7.5)]
examples = [np_array_one, np_array_mult, int_, list_int, float_, list_float]
だから我々は、関数がどのように動作するかを確認することができます。
for case in examples:
print 'Input type: {}.'.format(type(case))
out = square(case)
print out
print 'Output type: {}'.format(type(out))
print '-----------------'
そして出力:
Input type: <type 'numpy.ndarray'>.
[ 11.56]
Output type: <type 'numpy.ndarray'>
-----------------
Input type: <type 'numpy.ndarray'>.
[ 11.56 4. 36. ]
Output type: <type 'numpy.ndarray'>
-----------------
Input type: <type 'int'>.
25
Output type: <type 'int'>
-----------------
Input type: <type 'list'>.
[4.0, 16.0, 8.4100000000000001]
Output type: <type 'list'>
-----------------
Input type: <type 'float'>.
28.09
Output type: <type 'float'>
-----------------
Input type: <type 'list'>.
[20.25, 82.809999999999988, 56.25]
Output type: <type 'list'>
-----------------
テストケースから、入力と出力は常に同じです。しかし、この機能は本当にきれいではありません。
私はこのquestionのコードをいくつか使っています。
これはStackOverflowの質問ですが、ここではヒントがあります:希望の結果がデフォルトNumPyの動作とどのように異なるのかを明確にしてください。_e.g._は 'np.square(2)'と 'np.square([ 2。]) 'と' np.square([1,2,3]) 'と呼ばれます。また、同じ入力について独自のコード例の出力を表示してみてください。 – mjul
これはあなたのために働きますか? '(x ** 2).squeeze()'? – Divakar