Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

Already on GitHub? Sign in to your account

fixed row/col orientation for 2D arrays #1834

Merged
merged 2 commits into from Sep 9, 2012
Jump to file or symbol
Failed to load files and symbols.
+20 −8
Split
View
@@ -686,7 +686,10 @@ def _read_index_node(self, node):
def _write_array(self, group, key, value):
if key in group:
self.handle.removeNode(group, key)
-
+
+ #Transform needed to interface with pytables row/col notation
+ value = value.T
+
if self.filters is not None:
atom = None
try:
@@ -701,6 +704,7 @@ def _write_array(self, group, key, value):
value.shape,
filters=self.filters)
ca[:] = value
+ getattr(group, key)._v_attrs.transposed = True
return
if value.dtype.type == np.object_:
@@ -719,6 +723,8 @@ def _write_array(self, group, key, value):
getattr(group, key)._v_attrs.shape = value.shape
else:
self.handle.createArray(group, key, value)
+
+ getattr(group, key)._v_attrs.transposed = True
def _write_table(self, group, items=None, index=None, columns=None,
values=None, append=False, compression=None):
@@ -958,23 +964,29 @@ def _read_array(group, key):
import tables
node = getattr(group, key)
data = node[:]
+ attrs = node._v_attrs
+
+ transposed = getattr(attrs, 'transposed', False)
if isinstance(node, tables.VLArray):
- return data[0]
+ ret = data[0]
else:
- attrs = node._v_attrs
-
dtype = getattr(attrs, 'value_type', None)
shape = getattr(attrs, 'shape', None)
if shape is not None:
# length 0 axis
- return np.empty(shape, dtype=dtype)
+ ret = np.empty(shape, dtype=dtype)
if dtype == 'datetime64':
- return np.array(data, dtype='M8[ns]')
- return data
-
+ ret = np.array(data, dtype='M8[ns]')
+ ret = data
+
+ if transposed == True:
+ return ret.T
+ else:
+ return ret
+
def _unconvert_index(data, kind):
if kind == 'datetime64':
index = DatetimeIndex(data)