【问题标题】:Convert a python nested list in numpy array在numpy数组中转换python嵌套列表
【发布时间】:2021-12-02 18:30:57
【问题描述】:

我正在尝试将嵌套列表转换为数组,但有些东西我不明白。 我的程序中有一个嵌套列表:

listt = [[1986.0,71.2,28.4,13.9,34.7], [1987.0,72.0,30.4,14.0,32.4]]

当我直接用它转换成数组时:

array = np.asarray(listt)

我得到:

# out: 
array = [[1.986e+03, 7.120e+01, 2.840e+01, 1.390e+01, 3.470e+01],
        [1.987e+03, 7.200e+01, 3.040e+01, 1.400e+01, 3.240e+01]]

如果我手动将嵌套列表的每个元素放入一个新变量中,例如:

# in: 
x = [[1986.0, 71.2, 28.4, 13.9, 34.7], [1987.0, 72.0, 30.4, 14.0, 32.4]]
 
array = np.asarray(x)

# out:  
#        [[1986.    71.2   28.4   13.9   34.7],
#         [1987.    72.    30.4   14.    32.4]]

没有分隔的逗号。只是想不明白为什么在这两种情况下。谢谢

【问题讨论】:

  • 一个是 2D,一个是 3D。你确定你正确地复制和粘贴了这些东西吗?
  • 你的输出有问题,你的第一个输出应该是[[[1.986.0 , ...]]] 注意到三重括号了吗?即使有这种差异,两个输出对我来说都是相同的。
  • @MadPhysicist 很抱歉,我删除了括号(array = np.asarray(listt))
  • @kinshukdua 当我删除每个嵌套列表中的第一个值(例如:1986.0、1987.0)时,我得到了一个我想要的完美数组。但我仍然不明白为什么这些值会对结果产生影响
  • 与此无关。比较str(array)repr(array) 的输出。

标签: python arrays list numpy


【解决方案1】:

我不确定您如何能够像上次显示的那样获得输出,即没有逗号分隔的数组。我得到以下。我不记得曾经见过没有逗号分隔的列表。

In[4]: x = [[1986.0, 71.2, 28.4, 13.9, 34.7], [1987.0, 72.0, 30.4, 14.0, 32.4]]
       array = np.asarray(x)
       array


Out[4]:array([[1986. ,   71.2,   28.4,   13.9,   34.7],
       [1987. ,   72. ,   30.4,   14. ,   32.4]])

【讨论】:

  • 如果你使用他们的__str__而不是他们的__repr__,ndarrays将不带逗号显示。像您一样在 REPL 上比较 print(array)print(repr(array)) 或只是 array。其余的都与任何事情无关。
  • @MattiH 但我们写了同样的东西,但没有逗号。当我从变量中询问类型 type(array) 时,我得到(numpy.ndarray)
  • @Iguananaut 哦,我明白了,你是对的。非常感谢
猜你喜欢
  • 2018-12-24
  • 1970-01-01
  • 2018-12-06
  • 1970-01-01
  • 2012-11-24
  • 2019-03-12
  • 1970-01-01
  • 2017-09-11
  • 2011-09-30
相关资源
最近更新 更多