Reconcile np.fromiter und mehrdimensionale Arrays in Python
Ich liebenp.fromiter
vonnumpy
weil es ein ressourcenschonender Weg ist, @ zu baunp.array
Objekte. Es scheint jedoch, als ob es keine mehrdimensionalen Arrays unterstützt, die auch sehr nützlich sind.
import numpy as np
def fun(i):
""" A function returning 4 values of the same type.
"""
return tuple(4*i + j for j in range(4))
# Trying to create a 2-dimensional array from it:
a = np.fromiter((fun(i) for i in range(5)), '4i', 5) # fails
# This function only seems to work for 1D array, trying then:
a = np.fromiter((fun(i) for i in range(5)),
[('', 'i'), ('', 'i'), ('', 'i'), ('', 'i')], 5) # painful
# .. `a` now looks like a 2D array but it is not:
a.transpose() # doesn't work as expected
a[0, 1] # too many indices (of course)
a[:, 1] # don't even think about it
Wie bekomme icha
um ein mehrdimensionales Array zu sein und dabei eine so träge Konstruktion auf der Basis von Generatoren beizubehalten?