0

私は2つのnumpy.arraysを持っています。次の結果を効率的に取得したい

1. b の要素を a のサブ配列に追加する

    a=numpy.array([(1,2,3),(1,2,3)])
    b=numpy.array([0,0])
->
    c=[(0,1,2,3),(0,1,2,3)] 

ループ内のコード

a=numpy.array([(1,2,3),(1,2,3)])
b=numpy.array([(0,0)])
c=numpy.zeros(2 , 4)
idx=0
for x in a:
   c[idx]=(a[idx][0],a[idx][1],a[idx][2], b[idx])
   idx = idx+1


2. 2 つの 1-D 配列から次元 (a.dim*b.dim, 2) の 2-D 配列を取得する

    a=numpy.array([(1,2)])
    b=numpy.array([(3,4)])
->
    c=[(1,3),(1,4),(2,3),(2,4)]

ループ内のコード

a=numpy.array([(1,2)])
b=numpy.array([(3,4)])
c=numpy.zeros(a.size*b.size , 2)
idx=0
for x in a:
    for y in b:
        c[idx]=(x,y)
        idx = idx+1
4

2 に答える 2

3

最初の問題については、別の方法で定義bして使用できnumpy.hstackます。

a = numpy.array([(1,2,3),(1,2,3)])
b = numpy.array([[0],[0]])
numpy.hstack((b,a))

2番目の問題に関しては、必要に応じて、おそらくszaの回答を使用して、その結果からnumpy配列を作成します。その手法は、古いスタック オーバーフローの質問で提案されました。

于 2013-08-28T02:34:11.213 に答える
2

最初のものについては、次のことができます

>>> a=numpy.array([(1,2,3),(1,2,3)])
>>> b=numpy.array([0,0])
>>> [tuple(numpy.insert(x, 0, y)) for (x,y) in zip(a,b)]
[(0, 1, 2, 3), (0, 1, 2, 3)]

2 つ目は、次のように 2 次元配列を取得できます。

>>> a=numpy.array([(1,2)])
>>> b=numpy.array([(3,4)])
>>> import itertools
>>> c = list(itertools.product(a.tolist()[0], b.tolist()[0]))
[(1, 3), (1, 4), (2, 3), (2, 4)]
于 2013-08-28T02:21:46.783 に答える