Issue converting list to NumPy array

前端 未结 2 1112
一整个雨季
一整个雨季 2021-01-21 09:14

I have a list that consits of 2000 rows and 88200 columns:

testlist = list(split_audio_to_parts(audio, self.sample_rate, self.audio_index))

deb

2条回答
  •  清酒与你
    2021-01-21 10:04

    The problem is testlist is a list of different size arrays. For example checkout this code:

    >>>import numpy as np
    >>>import random 
    >>>random.seed(3240324324)
    >>> y=[np.array(list(range(random.randint(1,3)))) for _ in range(3)]
    >>> y
    [array([0, 1, 2]), array([0, 1, 2]), array([0])]
    >>> np.array(y)
    array([array([0, 1, 2]), array([0, 1, 2]), array([0])], dtype=object)
    >>> np.array(y).shape
    (3,)
    

    and the array would be of object type instead of float. the only way for this to work is having same sized arrays.

    If you really need to stuff these rows somehow into an array you can pad with zeros, for example:

    >>> size = y[max(enumerate(y),key=lambda k:k[1].shape)[0]].shape[0]
    >>> z=[np.append(x,np.zeros(size-x.shape[0])) for x in y]
    >>> z
    [array([ 0.,  1.,  2.]), array([0, 1, 2]), array([0, 0, 0])]
    >>>np.array(z).shape
    (3, 3)
    

    but you would have to decide how you do this padding.

提交回复
热议问题