如何将2D numpy数组转换为1D numpy数组的1D numpy数组?

时间:2013-05-17 03:42:47

标签: python arrays numpy nested vectorization

换句话说,外部数组的每个元素都是来自原始2D数组的行向量。

4 个答案:

答案 0 :(得分:1)

@Jaime已经说过,2D数组可以解释为1D数组的数组,假设:

a = np.array([[1,2,3],
              [4,5,6],
              [7,8,9]])

执行a[0]将返回array([1, 2, 3])

所以你不需要进行任何转换。

答案 1 :(得分:0)

我认为使用numpy数组来做这件事没有多大意义,只是觉得你错过了numpy的所有优点。

答案 2 :(得分:0)

我有一个相同的问题就是将一个不同长度的原始数据附加到2D数组中。

我发现的唯一技巧是使用list comprenhsion并附加新行(见下文)。我估计不是最优,但至少它起作用;-)
希望这可以帮助

>>> x=np.reshape(np.arange(0,9),(3,3))
>>> x
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
>>> row_to_append = np.arange(9,11)
>>> row_to_append
array([ 9, 10])
>>> result=[item for item in x]
>>> result.append(row_to_append)
>>> result
[array([0, 1, 2]), array([3, 4, 5]), array([6, 7, 8]), array([ 9, 10])]

答案 3 :(得分:0)

np.vsplit将数组垂直(按行)拆分为多个子数组。

x=np.arange(12).reshape(3,4)
In [7]: np.vsplit(x,3)
Out[7]: [array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8,  9, 10, 11]])]

可以使用理解来将这些数组重塑为1d数组。

这是一个数组列表,而不是一个数组数组。这样的数组序列可以与vstack(或hstack,dstack)重新组合。

np.array([np.arange(3),np.arange(4)])

生成一个2元素的数组数组。但是如果列表中的数组都具有相同的形状(或兼容),则会生成2d数组。在数据存储方面,它是1d阵列的2d还是1d可能无关紧要。