2016-09-29 7 views
0

次のように私のコードの関連抜粋は次のとおりです。リストを入力としてnp.arangeを使用できますか?

import numpy as np 

def create_function(duration, start, stop): 
    rates = np.linspace(start, stop, duration*1000) 
    return rates 

def generate_spikes(duration, start, stop): 
    rates = [create_function(duration, start, stop)] 
    array = [np.arange(0, (duration*1000), 1)] 
    start_value = [np.repeat(start, duration*1000)] 
    double_array = [np.add(array,array)] 
    times = np.arange(np.add(start_value,array), np.add(start_value,double_array), rates) 
    return times/1000. 

私はこれは本当に非効率的な符号化(特にSTART_VALUEとdouble_arrayもの)である知っているが、それは何らかの形で私のようリストをarangeを使用しようとしているのすべての製品です入力。

私はこのエラーを取得しておいてください。

基本的に
Type Error: int() argument must be a string, a bytes-like element, or a number, not 'list' 

、私がやろうとしているものの例がこれです:

私は2つのアレイa = [1, 2, 3, 4]b = [0.1, 0.2, 0.3, 0.4]を持っていた、私が使用したいと思います[1.1, 1.2, 1.3, 2.2, 2.4, 2.6, 3.3, 3.6, 3.9, 4.4, 4.8, 5.2]を生成するにはnp.arange? (私は配列内のすべての要素に異なるステップサイズを使用しています)

これも可能ですか?もしそうなら、リストを平らにする必要がありますか?

+0

np.array([私はBでjのために私のためにjは+]) – NaN

答えて

1

あなたは、効率のためにそこにbroadcastingを使用することができます -

(a + (b[:,None] * a)).ravel('F') 

サンプル実行

-

In [52]: a 
Out[52]: array([1, 2, 3, 4]) 

In [53]: b 
Out[53]: array([ 0.1, 0.2, 0.3, 0.4]) 

In [54]: (a + (b[:,None] * a)).ravel('F') 
Out[54]: 
array([ 1.1, 1.2, 1.3, 1.4, 2.2, 2.4, 2.6, 2.8, 3.3, 3.6, 3.9, 
     4.2, 4.4, 4.8, 5.2, 5.6]) 

が予想される出力を見ると、それはあなたがのためにbオフちょうど最初の3つの要素を使用しているようです計算。だから、その目標を達成するために、私たちは最初の3つの要素をスライスし、その計算を行い、そのような -

In [55]: (a + (b[:3,None] * a)).ravel('F') 
Out[55]: 
array([ 1.1, 1.2, 1.3, 2.2, 2.4, 2.6, 3.3, 3.6, 3.9, 4.4, 4.8, 
     5.2]) 
+0

ありがとう!それは有り難いです。 私はこれを理解するために働く必要がありますが、それは私が望んだことだけです。ありがとうございました! – katydidit

関連する問題