Python Numpy:从JSON文件加载数据会得到带有嵌套列表的np数组

Python Numpy:从JSON文件加载数据会得到带有嵌套列表的np数组,python,json,numpy,Python,Json,Numpy,我以列表的形式从JSON文件加载数据,然后生成一个NumPy数组 JSON文件的结构如下 { "label": "4", "mfcc": [ [ [ -147.2358550730904, 52.60503152410914, <more values Total=13>

我以列表的形式从JSON文件加载数据,然后生成一个NumPy数组

JSON文件的结构如下

{
    "label": "4",
    "mfcc": [
        [
            [
                -147.2358550730904,
                52.60503152410914,
                <more values Total=13>

            ],
            <more arrays Total=44>

看起来最外层的列表被转换为NumPy数组,而内部列表仍然是列表。见下图:

发生了什么事


提前谢谢

这意味着该文件包含一个包含列表的numpy数组

  • 两者都是故意的
  • 您(或某人)试图将列表列表转换为numpy数组,但嵌套列表的长度不尽相同(numpy数组需要相同的长度)。因此,numpy不会创建一个合适的2D numpy数组,而是创建一个包含列表的一维numpy数组。要解决此问题,请确保所有嵌套列表的长度相同(例如,您可以使用
    0
    填充它们)

JSON字符串/文件可以是嵌套列表和dict的组合。加载后不会显示任何文件或列表
np.array(alist)
仅当列表中的嵌套是规则的(如
numpy.array
docs所示)时,才会给出一个好的多维数组。因此,仅仅说文件是JSON对我们没有帮助。我已经添加了JSON文件
数据[“mfcc”]
看起来确实像一个列表,但它可能不够规则,无法转换为多维数组。列表是不规则的。我在代码中添加了一个条件,使JSON文件能够处理它。谢谢。第二点不成立。JSON文件中的数据是完整的。请检查JSON文件。缺少的值是冒名顶替者。谢谢发现问题。请不要忘记验证答案或将答案添加到问题中,以供将来的读者使用
with open("data.json", 'r') as file:
   data = json.load(file)
   
   mfcc = np.array(data["mfcc"])