4

この形式のnumpy配列があります

[[-0.77947021  0.83822138]
[ 0.15563491  0.89537743]
[-0.0599077  -0.71777995]
[ 0.20759636  0.75893338]]

元の配列リストからこの形式[x1, x2, x1*x2]のnumpy 配列を作成したいと思います。[x1, x2]

現時点では、Python コードを使用してリストのリストを作成し、それを numpy 配列に変換しています。しかし、これを行うためのより良い方法があるかもしれないと思います。

4

2 に答える 2

5

そのようです:

In [22]: import numpy as np

In [23]: x = np.array([[-0.77947021,  0.83822138],
    ...: [ 0.15563491,  0.89537743],
    ...: [-0.0599077,  -0.71777995],
    ...: [ 0.20759636,  0.75893338]])

In [24]: np.c_[x, x[:,0] * x[:,1]]
Out[24]: 
array([[-0.77947021,  0.83822138, -0.6533686 ],
       [ 0.15563491,  0.89537743,  0.13935199],
       [-0.0599077 , -0.71777995,  0.04300055],
       [ 0.20759636,  0.75893338,  0.15755181]])

これはnumpy.c_、さまざまな配列を 2 番目の次元に沿って連結する便利な関数です。

Numpy のチュートリアルで、配列の連結に関する詳細情報を見つけることができます。hstack(ハイメの回答を参照)、vstackconcatenaterow_stackおよびのような関数column_stackは、おそらく使用すべき「公式」関数です。関数r_c_は、Matlab の機能の一部をシミュレートするためのちょっとしたハックです。それらは少し醜いですが、もう少しコンパクトに書くことができます。

于 2013-11-07T17:51:15.943 に答える
1

100 万通りの方法がありますが、私はおそらくこれを使用します。

>>> x = np.random.rand(5, 2)
>>> np.hstack((x, np.prod(x, axis=1, keepdims=True)))
array([[ 0.39614232,  0.14416164,  0.05710853],
       [ 0.75068436,  0.61687739,  0.46308021],
       [ 0.90181541,  0.20365294,  0.18365736],
       [ 0.08172452,  0.36334486,  0.02969418],
       [ 0.61455203,  0.80694432,  0.49590927]])
于 2013-11-07T17:58:42.777 に答える