Skip to content

Commit 10d48b4

Browse files
authored
Merge pull request #531 from jgrewe/str2ddataarray
[h5dataset] change string conversion to work with more than 1d
2 parents b139dec + e583bcb commit 10d48b4

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

nixio/hdf5/h5dataset.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ def read_data(self, slc=None):
6161
# Let's change it to IndexError
6262
raise IndexError(te_exc)
6363
if data.dtype == util.vlen_str_dtype:
64-
data = np.array([ensure_str(s) for s in data], dtype=util.vlen_str_dtype)
64+
data = np.reshape(np.array(list(map(ensure_str, data.ravel()))), data.shape)
6565
elif data.dtype.fields:
6666
data = self._convert_string_cols(data)
6767
return data

nixio/test/test_data_view.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,21 @@ def test_data_view_read(self):
3333
dv = da.get_slice((10, 3), extents=(1, 3))
3434
np.testing.assert_almost_equal(dv[:], da[10:11, 3:6])
3535

36+
def test_data_view_read_2d_str_array(self):
37+
numbers = ["one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten"]
38+
data = np.empty((10, 4), dtype=str)
39+
for i in range(10):
40+
for j in range(4):
41+
data[i, j] = " ".join([numbers[i], numbers[j]])
42+
da = self.file.blocks[0].create_data_array("str_2d_array", "test", dtype=nix.DataType.String, data=data)
43+
da.append_set_dimension()
44+
da.append_set_dimension()
45+
46+
dv = da.get_slice((0, 0), extents=(10, 4))
47+
npeq = np.testing.assert_equal
48+
npeq(dv.shape, da.shape)
49+
npeq(dv[:], data)
50+
3651
def test_data_view_fancy_slicing(self):
3752
da = self.file.blocks[0].data_arrays[0]
3853
dv = da.get_slice((5, 8), extents=(10, 20))

0 commit comments

Comments
 (0)