0

Matlab freadをpythonに変換する必要があります。特に、2D配列への読み取りと、読み取り中のデータのスキップを可能にする必要があります。私は次のことを思いついたが、それを行うにはもっと効率的で「pythonic」な方法があるかもしれないと思う(私は決してプログラマーではない)。なにか提案を?読み取るファイルが大きすぎるため、ファイル全体を読み取ってから配列をサブサンプリングできないことに注意してください。

def FromFileSkip(fid, count=1, skip=0, dtype=np.float32):
    if np.ndim(count)==0:
        if skip>=0:
            data = np.zeros(count, dtype=dtype)
            k = 0
            while k<count:
                data[k] = np.fromfile(fid, count=1, dtype=dtype)
                fid.seek(skip, 1)
                k +=1
            return data
    elif np.ndim(count)==1:
        if skip>0:
            data = np.zeros(count, dtype=dtype)
            k = 0
            while k<count[1]:
                data[:,k] = np.fromfile(fid, count=count[0], dtype=dtype)
                fid.seek(skip, 1)
                k +=1
            return data
    else:
        raise ValueError('File can be read only into 1d or 2d arrays')
4

1 に答える 1