如何将一维数组转换为只有一列的二维数组?

0 投票
2 回答
1795 浏览
提问于 2025-04-18 01:42

我想把一个 numpy 数组 的形状从这个...

[ 3803.74060338   2041.36742598   2884.96439427  17561.9569717 ]

改成这个...

[ [3803.74060338]   
  [2041.36742598]   
  [2884.96439427]  
  [17561.9569717] ]

我试着用 np.reshape(my_array, (1,1)),但是总是出现这个错误...

ValueError: total size of new array must be unchanged

请问 reshape 是我想要做的操作吗?

2 个回答

3

之所以np.shape()没能正常工作,是因为你试图把一个包含4个元素的数组变成一个1行1列的数组。

>>> import numpy as np
>>> a=np.array([1,2,3,4,5])
>>> a
array([1, 2, 3, 4, 5])
>>> a.reshape(len(a),1)
array([[1],
       [2],
       [3],
       [4],
       [5]])
>>> 
2

使用 numpy.newaxis 来给数组添加额外的维度:

>>> my_array = numpy.array([1, 2, 3, 4, 5])
>>> my_array[:, numpy.newaxis]
array([[1],
       [2],
       [3],
       [4],
       [5]])

(numpy.newaxis 实际上就是 None,所以你也可以直接用 None。我觉得用 newaxis 更容易理解,但这主要是个人喜好的问题。)

撰写回答