【问题标题】:How to convert a numpy.ndarray type into a list?如何将 numpy.ndarray 类型转换为列表?
【发布时间】:2018-06-13 04:38:22
【问题描述】:

我想在 python 中读取 matfile,然后将数据导出到数据库中。为了做到这一点,我需要将数据类型作为 python 中的列表。我写了下面的代码:

import scipy.io as si
import csv

a = si.loadmat('matfilename')
b = a['variable']                
list1=b.tolist()  

变量有 1 行 15 列。当我打印list1 时,我得到以下答案:(它确实是一个列表,但一个列表只包含一个元素。这意味着当我调用 list1[0] 时,我得到相同的结果。):

[[array(['A'], 
  dtype='<U13'), array(['B'], 
  dtype='<U14'), array(['C'], 
  dtype='<U6'), array(['D'], 
  dtype='<U4'), array(['E'], 
  dtype='<U10'), array(['F'], 
  dtype='<U13'), array(['G'], 
  dtype='<U11'), array(['H'], 
  dtype='<U9'), array(['I'], 
  dtype='<U16'), array(['J'], 
  dtype='<U18'), array(['K'], 
  dtype='<U16'), array(['L'], 
  dtype='<U16'), array(['M'], 
  dtype='<U16'), array(['N'], 
  dtype='<U14'), array(['O'], 
  dtype='<U13')]]

虽然我期望的形式是:

['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O']

有谁知道问题出在哪里?

【问题讨论】:

  • 试试:b.astype(str).tolist()?或者,b.astype('&lt;U8').tolist()
  • 你能提供'matfilename'文件吗?
  • @WillemVanOnsem 很遗憾我无法提供。
  • @cᴏʟᴅsᴘᴇᴇᴅ 我收到错误“ValueError: setting an array element with a sequence”
  • 你能提供b矩阵的print吗?

标签: python arrays numpy mat-file tolist


【解决方案1】:

根据我的经验,这就像 MATLAB 文件是结构化的,只有嵌套数组。

您可以自己创建列表:

>>> [x[0][0] for x in list1[0]]
['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O']

【讨论】:

  • 很好,谢谢。为了得到整个字符串,我只需要稍微改变一下: [x[0][:] for x in list1[0]]
  • 是的,您会发现不同的嵌套级别。最后你需要测试你需要索引多深。
猜你喜欢
  • 2019-10-12
  • 1970-01-01
  • 1970-01-01
  • 2021-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-07
相关资源
最近更新 更多