在Python中向多维数组添加新数组

时间:2017-04-08 20:59:12

标签: python arrays loops multidimensional-array

我有一个看起来如下的numpy数组:

np.array([
[[23, 12, 4, 103, 87], [0.6]],
[[32, 18, 3, 120, 70], [0.6]],
[[43, 12, 8, 109, 89], [0.4]],
[[20, 13, 7, 111, 77], [0.8]]
])

我想转换这个数组,其中最后一列成为它自己的数组,这样它将如下所示:

ID  c1  c2  c3    c4
12   m   n   5   1/2/2015
5    c   x   4   2/3/2015
45   g   t   47  4/23/2015
45   j   t   3   1/1/2016
61   t   y   12  7/3/2015
3    r   n   18  3/3/2015

最好的方法是什么?我是相对较新的Python并尝试了一些循环,但无济于事。谢谢!

1 个答案:

答案 0 :(得分:1)

numpy要求其数组中的尺寸一致;这会产生两种不同的尺寸。您可以使用两个单独的变量(即并行数组):

X = data[:, :-1]
y = data[:, -1]

X = np.array([
[23, 12, 4, 103, 87],
[32, 18, 3, 120, 70],
[43, 12, 8, 109, 89],
[20, 13, 7, 111, 77],
])


y = np.array([
0.6, 0.6, 0.4, 0.8
])

或者您可以存储对的列表:

my_list = [(row[:-1], [row[-1]]) for row in data]
my_list = [
([23, 12, 4, 103, 87], [0.6]),
([32, 18, 3, 120, 70], [0.6]),
([43, 12, 8, 109, 89], [0.4]),
([20, 13, 7, 111, 77], [0.8])
]

最佳策略取决于您的使用案例。