同一进程输出不同的numpy数组

时间:2018-12-27 15:53:24

标签: python numpy

我有一个脚本,可以将歌曲转换为numpy数组(librosa库),将其腌制到db中,然后提取。

我将数组存储在SQLite中,如图there

所示

因此,我的脚本会分析4个不同的文件夹,其中包含说唱,摇滚,流行和电子歌曲,每个文件夹有100个文件。每个文件夹都使用相同的功能:

    def insert(self, genre, data):
    conn = sqlite3.connect(DATABASE_FILE,
                           detect_types=sqlite3.PARSE_DECLTYPES)
    curs = conn.cursor()

    curs.execute(f"""insert into {genre} values(?)""", (data,))

    conn.commit()
    conn.close()

但是当我输出这些数组时,它们看起来都不同。说唱和流行音乐显示一种方式(我需要的方式),摇滚和电子显示另一种方式。示例:

我不需要的方式:

[[[ 0.00000000e+00  0.00000000e+00  0.00000000e+00 ...  2.54755225e-02
1.35376751e-01 -7.20393434e-02]]

[[ 0.00000000e+00  0.00000000e+00  0.00000000e+00 ... -2.36755103e-01
   -1.50851190e-01 -1.60914958e-01]]

 [[ 0.00000000e+00  0.00000000e+00  0.00000000e+00 ... -9.19092745e-02
   -7.79412016e-02 -5.93096465e-02]]

 ...

我需要的方式:

[[array([-1.3420450e-05, -1.2423131e-05, -1.5018032e-05, ...,
   -3.0817756e-01, -2.4027914e-01, -2.3190670e-01], dtype=float32)]
[array([ 0.        ,  0.        ,  0.        , ..., -0.7026442 ,
       -0.67226726, -0.7215703 ], dtype=float32)]
 [array([0.        , 0.        , 0.        , ..., 0.06976765, 0.22147852,
       0.11491765], dtype=float32)]
 [array([0.        , 0.        , 0.        , ..., 0.22524872, 0.1910718 ,
       0.2159081 ], dtype=float32)]

我的提取方法:

    def execute(self, genre):
    conn = sqlite3.connect(DATABASE_FILE,
                           detect_types=sqlite3.PARSE_DECLTYPES)
    curs = conn.cursor()

    curs.execute(f'''select arr from {genre}''')
    data = curs.fetchall()

    conn.close()
    return data

所以我的问题是这怎么可能?输出顺序为:好,坏,好,坏 怎么了?

P.S。在运行.size方法时显示关键区别:

130
110139750
130
172651500

即使大小必须在100左右。在这种情况下,内置的len()函数也可以正常工作。

0 个答案:

没有答案