将形状数组(n,)转换为numpy形状数组(n,1)

时间:2015-09-22 17:09:05

标签: python arrays numpy

我有一个数组,我从带有numpy的.npz文件中读取,其形状我无法解释。

当我打印数组时,我得到以下形式的数字:

[1 2 3 2 1 8 9 8 3 4 ...]

没有任何逗号将它们分开

我想将此数组转换为维度(n,1)的numpy数组,其中n是元素数,1是列数。

有一种优雅的方式吗?

1 个答案:

答案 0 :(得分:3)

形状(n, )表示其长度为n的一维数组。如果您认为形状(n, 1)表示一维数组,那么它不会,(n,1)表示n个子数组的二维数组,每个子数组包含1个元素。

如果你真正想要的是一个形状(n, 1)的数组,你可以使用ndarray.reshape()形状(-1, 1) -

array.reshape((-1,1))

演示 -

In [64]: na
Out[64]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

In [65]: str(na)
Out[65]: '[0 1 2 3 4 5 6 7 8 9]'

In [66]: na.reshape((-1,1))
Out[66]:
array([[0],
       [1],
       [2],
       [3],
       [4],
       [5],
       [6],
       [7],
       [8],
       [9]])

In [67]: na.reshape((-1,1)).shape
Out[67]: (10, 1)

正如您所看到的,这会将数组从1d数组移动到2d数组,每个内部行(内部数组)只包含1个元素。这可能不是你想要的。输出如 -

[1 2 3 2 1 8 9 8 3 4 ...]

只是numpy数组的str()结果,它确实意味着内部的元素没有分开。