换句话说,外部数组的每个元素都是来自原始2D数组的行向量。
答案 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可能无关紧要。