将2D NumPy数组转换为1D数组以绘制直方图

将2D NumPy数组转换为1D数组以绘制直方图,numpy,matplotlib,Numpy,Matplotlib,我正试图用matplotlib绘制直方图。 我需要转换我的单线2D数组 [[1,2,3,4]] # shape is (1,4) 进入一维数组 [1,2,3,4] # shape is (4,) 我该怎么做呢?就可以了 还有一个更具体的函数,它似乎可以完全满足您的需要。您可以直接为该列编制索引: >>> import numpy as np >>> x2 = np.array([[1,2,3,4]]) >>> x2.shape (1, 4

我正试图用matplotlib绘制直方图。 我需要转换我的单线2D数组

[[1,2,3,4]] # shape is (1,4)
进入一维数组

[1,2,3,4] # shape is (4,)
我该怎么做呢?

就可以了


还有一个更具体的函数,它似乎可以完全满足您的需要。

您可以直接为该列编制索引:

>>> import numpy as np
>>> x2 = np.array([[1,2,3,4]])
>>> x2.shape
(1, 4)
>>> x1 = x2[0,:]
>>> x1
array([1, 2, 3, 4])
>>> x1.shape
(4,)
或者您可以使用:

使用

flat
属性返回2D数组上的1D迭代器。此方法可推广到任意数量的行(或维度)。对于大型阵列,它可能比制作扁平副本更有效。

添加作为未来搜索者的另一种选择。从文件来看

它相当于重塑(-1,顺序=顺序)

由于阵列为1xN,因此以下各项都是等效的:

  • arr1d=np.ravel(arr2d)
  • arr1d=arr2d.ravel()
  • arr1d=arr2d.flant()
  • arr1d=np.重塑(arr2d,-1)
  • arr1d=arr2d.重塑(-1)
  • arr1d=arr2d[0,:]

mtrw提供的答案适用于实际上只有一条像这样的线的数组,但是如果您有一个二维数组,具有二维值,则可以按如下方式转换它

a = np.array([[1,2,3],[4,5,6]])
从这里你可以找到数组的形状
np.shape
,并找到数组的乘积
np.product
,这就得到了元素的数量。如果您现在使用
np.reformate()
将数组的形状调整为元素总数的一个长度,您将得到一个始终有效的解决方案

np.reshape(a, np.product(a.shape))
>>> array([1, 2, 3, 4, 5, 6])

更具体地说,
arr.reformate(-1)
将数组转换为1D。但是等效的
ravel()
更好,因为它专门用于指示到1D的转换。
a = np.array([[1,2,3],[4,5,6]])
np.reshape(a, np.product(a.shape))
>>> array([1, 2, 3, 4, 5, 6])