示例#1
0
 def test_fromrecords(self):
     "Test construction from records."
     (mrec, nrec, ddtype) = self.data
     #......
     palist = [(1, 'abc', 3.7000002861022949, 0),
               (2, 'xy', 6.6999998092651367, 1),
               (0, ' ', 0.40000000596046448, 0)]
     pa = recfromrecords(palist, names='c1, c2, c3, c4')
     mpa = fromrecords(palist, names='c1, c2, c3, c4')
     assert_equal_records(pa, mpa)
     #.....
     _mrec = fromrecords(nrec)
     assert_equal(_mrec.dtype, mrec.dtype)
     for field in _mrec.dtype.names:
         assert_equal(getattr(_mrec, field), getattr(mrec._data, field))
     #
     _mrec = fromrecords(nrec.tolist(), names='c1,c2,c3')
     assert_equal(_mrec.dtype, [('c1', int), ('c2', float), ('c3', '|S5')])
     for (f, n) in zip(('c1', 'c2', 'c3'), ('a', 'b', 'c')):
         assert_equal(getattr(_mrec, f), getattr(mrec._data, n))
     #
     _mrec = fromrecords(mrec)
     assert_equal(_mrec.dtype, mrec.dtype)
     assert_equal_records(_mrec._data, mrec.filled())
     assert_equal_records(_mrec._mask, mrec._mask)
示例#2
0
    def test_fromrecords(self):
        # Test construction from records.
        (mrec, nrec, ddtype) = self.data
        #......
        palist = [(1, 'abc', 3.7000002861022949, 0),
                  (2, 'xy', 6.6999998092651367, 1),
                  (0, ' ', 0.40000000596046448, 0)]
        pa = recfromrecords(palist, names='c1, c2, c3, c4')
        mpa = fromrecords(palist, names='c1, c2, c3, c4')
        assert_equal_records(pa, mpa)
        #.....
        _mrec = fromrecords(nrec)
        assert_equal(_mrec.dtype, mrec.dtype)
        for field in _mrec.dtype.names:
            assert_equal(getattr(_mrec, field), getattr(mrec._data, field))

        _mrec = fromrecords(nrec.tolist(), names='c1,c2,c3')
        assert_equal(_mrec.dtype, [('c1', int), ('c2', float), ('c3', '|S5')])
        for (f, n) in zip(('c1', 'c2', 'c3'), ('a', 'b', 'c')):
            assert_equal(getattr(_mrec, f), getattr(mrec._data, n))

        _mrec = fromrecords(mrec)
        assert_equal(_mrec.dtype, mrec.dtype)
        assert_equal_records(_mrec._data, mrec.filled())
        assert_equal_records(_mrec._mask, mrec._mask)
示例#3
0
    def test_fromrecords(self):
        # Test construction from records.
        (mrec, nrec, ddtype) = self.data
        # ......
        palist = [
            (1, "abc", 3.7000002861022949, 0),
            (2, "xy", 6.6999998092651367, 1),
            (0, " ", 0.40000000596046448, 0),
        ]
        pa = recfromrecords(palist, names="c1, c2, c3, c4")
        mpa = fromrecords(palist, names="c1, c2, c3, c4")
        assert_equal_records(pa, mpa)
        # .....
        _mrec = fromrecords(nrec)
        assert_equal(_mrec.dtype, mrec.dtype)
        for field in _mrec.dtype.names:
            assert_equal(getattr(_mrec, field), getattr(mrec._data, field))

        _mrec = fromrecords(nrec.tolist(), names="c1,c2,c3")
        assert_equal(_mrec.dtype, [("c1", int), ("c2", float), ("c3", "|S5")])
        for (f, n) in zip(("c1", "c2", "c3"), ("a", "b", "c")):
            assert_equal(getattr(_mrec, f), getattr(mrec._data, n))

        _mrec = fromrecords(mrec)
        assert_equal(_mrec.dtype, mrec.dtype)
        assert_equal_records(_mrec._data, mrec.filled())
        assert_equal_records(_mrec._mask, mrec._mask)
示例#4
0
 def test_fromrecords(self):
     # Test construction from records.
     (mrec, nrec, ddtype) = self.data
     # ......
     palist = [(1, "abc", 3.7000002861022949, 0), (2, "xy", 6.6999998092651367, 1), (0, " ", 0.40000000596046448, 0)]
     pa = recfromrecords(palist, names="c1, c2, c3, c4")
     mpa = fromrecords(palist, names="c1, c2, c3, c4")
     assert_equal_records(pa, mpa)
     # .....
     _mrec = fromrecords(nrec)
     assert_equal(_mrec.dtype, mrec.dtype)
     for field in _mrec.dtype.names:
         assert_equal(getattr(_mrec, field), getattr(mrec._data, field))
     #
     _mrec = fromrecords(nrec.tolist(), names="c1,c2,c3")
     assert_equal(_mrec.dtype, [("c1", int), ("c2", float), ("c3", "|S5")])
     for (f, n) in zip(("c1", "c2", "c3"), ("a", "b", "c")):
         assert_equal(getattr(_mrec, f), getattr(mrec._data, n))
     #
     _mrec = fromrecords(mrec)
     assert_equal(_mrec.dtype, mrec.dtype)
     assert_equal_records(_mrec._data, mrec.filled())
     assert_equal_records(_mrec._mask, mrec._mask)
示例#5
0
def fromrecords(reclist, dtype=None, shape=None, formats=None, names=None,
                titles=None, aligned=False, byteorder=None,
                fill_value=None, mask=nomask):
    """Creates a MaskedRecords from a list of records.

    Parameters
    ----------
    reclist : sequence
        A list of records. Each element of the sequence is first converted
        to a masked array if needed. If a 2D array is passed as argument, it is
        processed line by line
    dtype : {None, dtype}, optional
        Data type descriptor.
    shape : {None,int}, optional
        Number of records. If None, ``shape`` is defined from the shape of the
        first array in the list.
    formats : {None, sequence}, optional
        Sequence of formats for each individual field. If None, the formats will
        be autodetected by inspecting the fields and selecting the highest dtype
        possible.
    names : {None, sequence}, optional
        Sequence of the names of each field.
    fill_value : {None, sequence}, optional
        Sequence of data to be used as filling values.
    mask : {nomask, sequence}, optional.
        External mask to apply on the data.

    Notes
    -----
    Lists of tuples should be preferred over lists of lists for faster processing.
    """
    # Grab the initial _fieldmask, if needed:
    _mask = getattr(reclist, '_mask', None)
    # Get the list of records.....
    try:
        nfields = len(reclist[0])
    except TypeError:
        nfields = len(reclist[0].dtype)
    if isinstance(reclist, ndarray):
        # Make sure we don't have some hidden mask
        if isinstance(reclist, MaskedArray):
            reclist = reclist.filled().view(ndarray)
        # Grab the initial dtype, just in case
        if dtype is None:
            dtype = reclist.dtype
        reclist = reclist.tolist()
    mrec = recfromrecords(reclist, dtype=dtype, shape=shape, formats=formats,
                          names=names, titles=titles,
                          aligned=aligned, byteorder=byteorder).view(mrecarray)
    # Set the fill_value if needed
    if fill_value is not None:
        mrec.fill_value = fill_value
    # Now, let's deal w/ the mask
    if mask is not nomask:
        mask = np.array(mask, copy=False)
        maskrecordlength = len(mask.dtype)
        if maskrecordlength:
            mrec._mask.flat = mask
        elif len(mask.shape) == 2:
            mrec._mask.flat = [tuple(m) for m in mask]
        else:
            mrec.__setmask__(mask)
    if _mask is not None:
        mrec._mask[:] = _mask
    return mrec
示例#6
0
def fromrecords(reclist,
                dtype=None,
                shape=None,
                formats=None,
                names=None,
                titles=None,
                aligned=False,
                byteorder=None,
                fill_value=None,
                mask=nomask):
    """
    Creates a MaskedRecords from a list of records.

    Parameters
    ----------
    reclist : sequence
        A list of records. Each element of the sequence is first converted
        to a masked array if needed. If a 2D array is passed as argument, it is
        processed line by line
    dtype : {None, dtype}, optional
        Data type descriptor.
    shape : {None,int}, optional
        Number of records. If None, ``shape`` is defined from the shape of the
        first array in the list.
    formats : {None, sequence}, optional
        Sequence of formats for each individual field. If None, the formats will
        be autodetected by inspecting the fields and selecting the highest dtype
        possible.
    names : {None, sequence}, optional
        Sequence of the names of each field.
    fill_value : {None, sequence}, optional
        Sequence of data to be used as filling values.
    mask : {nomask, sequence}, optional.
        External mask to apply on the data.

    Notes
    -----
    Lists of tuples should be preferred over lists of lists for faster processing.

    """
    # Grab the initial _fieldmask, if needed:
    _mask = getattr(reclist, '_mask', None)
    # Get the list of records.
    if isinstance(reclist, ndarray):
        # Make sure we don't have some hidden mask
        if isinstance(reclist, MaskedArray):
            reclist = reclist.filled().view(ndarray)
        # Grab the initial dtype, just in case
        if dtype is None:
            dtype = reclist.dtype
        reclist = reclist.tolist()
    mrec = recfromrecords(reclist,
                          dtype=dtype,
                          shape=shape,
                          formats=formats,
                          names=names,
                          titles=titles,
                          aligned=aligned,
                          byteorder=byteorder).view(mrecarray)
    # Set the fill_value if needed
    if fill_value is not None:
        mrec.fill_value = fill_value
    # Now, let's deal w/ the mask
    if mask is not nomask:
        mask = np.array(mask, copy=False)
        maskrecordlength = len(mask.dtype)
        if maskrecordlength:
            mrec._mask.flat = mask
        elif mask.ndim == 2:
            mrec._mask.flat = [tuple(m) for m in mask]
        else:
            mrec.__setmask__(mask)
    if _mask is not None:
        mrec._mask[:] = _mask
    return mrec