转换一个numpy数组

pra*_*odh 4 python numpy

我有一个这种形式的numpy数组

[[-0.77947021  0.83822138]
[ 0.15563491  0.89537743]
[-0.0599077  -0.71777995]
[ 0.20759636  0.75893338]]
Run Code Online (Sandbox Code Playgroud)

我想创建这种形式的numpy的阵列[x1, x2, x1*x2],其中[x1, x2]是从原来的数组列表.

目前我正在使用python代码创建列表列表,然后将其转换为numpy数组.但我认为可能有更好的方法来做到这一点.

Bas*_*els 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]])
Run Code Online (Sandbox Code Playgroud)

这使用numpy.c_了一个便利功能,可以沿着它们的第二维连接各种数组.

您可以在Numpy的教程中找到有关连接数组的更多信息.像功能hstack(见海梅的答案)vstack,concatenate,row_stack并且column_stack很可能是你应该使用"官方"的功能.函数r_c_模拟Matlab的一些功能有点破解.它们有点难看,但允许你写得更紧凑.