0

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

4

4 回答 4

1

@Jaime 已经说过,二维数组可以解释为一维数组的数组,假设:

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

a[0]会回来array([1, 2, 3])

所以你不需要做任何转换。

于 2013-08-04T22:01:18.857 回答
0

我认为使用 numpy 数组来做到这一点没有什么意义,只是认为你错过了 numpy 的所有优点。

于 2013-05-17T11:32:41.043 回答
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]])]

可以使用理解将这些数组重塑为一维数组。

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

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

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

于 2013-09-10T02:55:51.530 回答
0

我在将具有不同长度的原始数据附加到二维数组时遇到了同样的问题。

到目前为止,我发现的唯一技巧是使用列表理解并附加新行(见下文)。我猜不是很理想,但至少它有效;-)
希望这可以帮助

>>> 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])]
于 2013-09-09T08:53:02.847 回答