Exemple #1
0
 def test_different_field_order(self):
     # gh-8940
     a = np.zeros(3, dtype=[('a', 'i4'), ('b', 'f4'), ('c', 'u1')])
     b = np.ones(3, dtype=[('c', 'u1'), ('b', 'f4'), ('a', 'i4')])
     # this should not give a FutureWarning:
     j = join_by(['c', 'b'], a, b, jointype='inner', usemask=False)
     assert_equal(j.dtype.names, ['b', 'c', 'a1', 'a2'])
Exemple #2
0
    def test_two_keys_two_vars(self):
        a = np.array(list(
            zip(np.tile([10, 11], 5), np.repeat(np.arange(5), 2),
                np.arange(50, 60), np.arange(10, 20))),
                     dtype=[('k', int), ('a', int), ('b', int), ('c', int)])

        b = np.array(list(
            zip(np.tile([10, 11], 5), np.repeat(np.arange(5), 2),
                np.arange(65, 75), np.arange(0, 10))),
                     dtype=[('k', int), ('a', int), ('b', int), ('c', int)])

        control = np.array([(10, 0, 50, 65, 10, 0), (11, 0, 51, 66, 11, 1),
                            (10, 1, 52, 67, 12, 2), (11, 1, 53, 68, 13, 3),
                            (10, 2, 54, 69, 14, 4), (11, 2, 55, 70, 15, 5),
                            (10, 3, 56, 71, 16, 6), (11, 3, 57, 72, 17, 7),
                            (10, 4, 58, 73, 18, 8), (11, 4, 59, 74, 19, 9)],
                           dtype=[('k', int), ('a', int), ('b1', int),
                                  ('b2', int), ('c1', int), ('c2', int)])
        test = join_by(['a', 'k'],
                       a,
                       b,
                       r1postfix='1',
                       r2postfix='2',
                       jointype='inner')
        assert_equal(test.dtype, control.dtype)
        assert_equal(test, control)
Exemple #3
0
 def test_join_subdtype(self):
     # tests the bug in https://stackoverflow.com/q/44769632/102441
     from numpy1.lib import recfunctions as rfn
     foo = np.array([(1, )], dtype=[('key', int)])
     bar = np.array([(1, np.array([1, 2, 3]))],
                    dtype=[('key', int), ('value', 'uint16', 3)])
     res = join_by('key', foo, bar)
     assert_equal(res, bar.view(ma.MaskedArray))
Exemple #4
0
    def test_join(self):
        a, b = self.a, self.b

        # Fixme, this test is broken
        #test = join_by(('a', 'b'), a, b)
        #control = np.array([(5, 55, 105, 100), (6, 56, 106, 101),
        #                    (7, 57, 107, 102), (8, 58, 108, 103),
        #                    (9, 59, 109, 104)],
        #                   dtype=[('a', int), ('b', int),
        #                          ('c', int), ('d', int)])
        #assert_equal(test, control)

        # Hack to avoid pyflakes unused variable warnings
        join_by(('a', 'b'), a, b)
        np.array([(5, 55, 105, 100), (6, 56, 106, 101), (7, 57, 107, 102),
                  (8, 58, 108, 103), (9, 59, 109, 104)],
                 dtype=[('a', int), ('b', int), ('c', int), ('d', int)])
Exemple #5
0
    def test_same_name_different_dtypes_key(self):
        a_dtype = np.dtype([('key', 'S5'), ('value', '<f4')])
        b_dtype = np.dtype([('key', 'S10'), ('value', '<f4')])
        expected_dtype = np.dtype([('key', 'S10'), ('value1', '<f4'),
                                   ('value2', '<f4')])

        a = np.array([('Sarah', 8.0), ('John', 6.0)], dtype=a_dtype)
        b = np.array([('Sarah', 10.0), ('John', 7.0)], dtype=b_dtype)
        res = join_by('key', a, b)

        assert_equal(res.dtype, expected_dtype)
Exemple #6
0
    def test_inner_join(self):
        # Basic test of join_by
        a, b = self.a, self.b

        test = join_by('a', a, b, jointype='inner')
        control = np.array([(5, 55, 65, 105, 100), (6, 56, 66, 106, 101),
                            (7, 57, 67, 107, 102), (8, 58, 68, 108, 103),
                            (9, 59, 69, 109, 104)],
                           dtype=[('a', int), ('b1', int), ('b2', int),
                                  ('c', int), ('d', int)])
        assert_equal(test, control)
Exemple #7
0
    def test_padded_dtype(self):
        dt = np.dtype('i1,f4', align=True)
        dt.names = ('k', 'v')
        assert_(len(dt.descr), 3)  # padding field is inserted

        a = np.array([(1, 3), (3, 2)], dt)
        b = np.array([(1, 1), (2, 2)], dt)
        res = join_by('k', a, b)

        # no padding fields remain
        expected_dtype = np.dtype([('k', 'i1'), ('v1', 'f4'), ('v2', 'f4')])

        assert_equal(res.dtype, expected_dtype)
Exemple #8
0
    def test_subarray_key(self):
        a_dtype = np.dtype([('pos', int, 3), ('f', '<f4')])
        a = np.array([([1, 1, 1], np.pi), ([1, 2, 3], 0.0)], dtype=a_dtype)

        b_dtype = np.dtype([('pos', int, 3), ('g', '<f4')])
        b = np.array([([1, 1, 1], 3), ([3, 2, 1], 0.0)], dtype=b_dtype)

        expected_dtype = np.dtype([('pos', int, 3), ('f', '<f4'),
                                   ('g', '<f4')])
        expected = np.array([([1, 1, 1], np.pi, 3)], dtype=expected_dtype)

        res = join_by('pos', a, b)
        assert_equal(res.dtype, expected_dtype)
        assert_equal(res, expected)
Exemple #9
0
    def test_leftouter_join(self):
        a, b = self.a, self.b

        test = join_by(('a', 'b'), a, b, 'leftouter')
        control = ma.array(
            [(0, 50, 100, -1), (1, 51, 101, -1), (2, 52, 102, -1),
             (3, 53, 103, -1), (4, 54, 104, -1), (5, 55, 105, -1),
             (6, 56, 106, -1), (7, 57, 107, -1), (8, 58, 108, -1),
             (9, 59, 109, -1)],
            mask=[(0, 0, 0, 1), (0, 0, 0, 1), (0, 0, 0, 1), (0, 0, 0, 1),
                  (0, 0, 0, 1), (0, 0, 0, 1), (0, 0, 0, 1), (0, 0, 0, 1),
                  (0, 0, 0, 1), (0, 0, 0, 1)],
            dtype=[('a', int), ('b', int), ('c', int), ('d', int)])
        assert_equal(test, control)
Exemple #10
0
    def test_no_r2postfix(self):
        # Basic test of join_by no_r2postfix
        a, b = self.a, self.b

        test = join_by('a',
                       a,
                       b,
                       r1postfix='1',
                       r2postfix='',
                       jointype='inner')
        control = np.array([(0, 50, 65, 100, 100), (1, 51, 66, 101, 101),
                            (2, 52, 67, 102, 102), (3, 53, 68, 103, 103),
                            (4, 54, 69, 104, 104), (5, 55, 70, 105, 105),
                            (6, 56, 71, 106, 106), (7, 57, 72, 107, 107),
                            (8, 58, 73, 108, 108), (9, 59, 74, 109, 109)],
                           dtype=[('a', int), ('b1', int), ('b', int),
                                  ('c', int), ('d', int)])
        assert_equal(test, control)
Exemple #11
0
    def test_outer_join(self):
        a, b = self.a, self.b

        test = join_by(('a', 'b'), a, b, 'outer')
        control = ma.array(
            [(0, 50, 100, -1), (1, 51, 101, -1), (2, 52, 102, -1),
             (3, 53, 103, -1), (4, 54, 104, -1), (5, 55, 105, -1),
             (5, 65, -1, 100), (6, 56, 106, -1), (6, 66, -1, 101),
             (7, 57, 107, -1), (7, 67, -1, 102), (8, 58, 108, -1),
             (8, 68, -1, 103), (9, 59, 109, -1), (9, 69, -1, 104),
             (10, 70, -1, 105), (11, 71, -1, 106), (12, 72, -1, 107),
             (13, 73, -1, 108), (14, 74, -1, 109)],
            mask=[(0, 0, 0, 1), (0, 0, 0, 1), (0, 0, 0, 1), (0, 0, 0, 1),
                  (0, 0, 0, 1), (0, 0, 0, 1), (0, 0, 1, 0), (0, 0, 0, 1),
                  (0, 0, 1, 0), (0, 0, 0, 1), (0, 0, 1, 0), (0, 0, 0, 1),
                  (0, 0, 1, 0), (0, 0, 0, 1), (0, 0, 1, 0), (0, 0, 1, 0),
                  (0, 0, 1, 0), (0, 0, 1, 0), (0, 0, 1, 0), (0, 0, 1, 0)],
            dtype=[('a', int), ('b', int), ('c', int), ('d', int)])
        assert_equal(test, control)