我无法将数据存储为数组

Posted

技术标签:

【中文标题】我无法将数据存储为数组【英文标题】:I can't store my data as an array 【发布时间】:2015-02-22 22:20:34 【问题描述】:

我正在尝试从 .wav 文件中读取数据并将其存储在数组中:

out = struct.unpack_from("%dh" % num_frames * num_channels, frames)
self.data = array(out)

当我尝试这个时,我得到了错误:

self.data = array(out)
TypeError: must be char, not tuple

是什么导致了这个错误? out 中的所有值都不是同一类型吗?它们不应该都是负整数还是正整数?

【问题讨论】:

如果你打印out,你会得到什么? 打印out 并检查您的结果是什么? 哦,我试过了,但它是一个绝对庞大的负整数和正整数列表。逐项检查是不可行的。我检查了前 10 个,它们也是整数。 【参考方案1】:

如果您使用array class,构造函数有两个参数,第一个是代表类型代码的字符。

所以你想要

from array import array
out = <...>
self.data = array('b', out)

或文档中列出的其他类型代码之一,而不是 'b'

或者您可以使用numpy.array,在这种情况下,您的代码应该按原样运行:

from numpy import array
out = <...>
self.data = array(out)

【讨论】:

成功了。我使用'h' 而不是'b'。它以前在没有使用这篇文章的最高评价答案中概述的第一个参数的情况下工作:***.com/questions/2063284/… 嗯,也许他们在谈论numpy.array? docs.scipy.org/doc/numpy/reference/generated/numpy.array.html 啊,原来是这样!现在一切都恢复正常了。唷。

以上是关于我无法将数据存储为数组的主要内容,如果未能解决你的问题,请参考以下文章

无法弄清楚如何将数据异步推送到数组

无法将存储数据访问到 vuex 中的组件中

解析 iOS SDK:无法从数组中获取对象

将 PHP 数组存储在单个 SQL 单元格中

FMDB之数组字典的存储

如何将来自 firebaselistobservable 的数据存储到数组中?