Puede crear utilizando listas anidadas:
matrix = [[a,b],[c,d],[e,f]]
Si tiene que ser dinámico que es más complicado, por qué no escribir una pequeña clase ti mismo?
class Matrix(object):
def __init__(self, rows, columns, default=0):
self.m = []
for i in range(rows):
self.m.append([default for j in range(columns)])
def __getitem__(self, index):
return self.m[index]
Esto puede ser usado como esto:
m = Matrix(10,5)
m[3][6] = 7
print m[3][6] // -> 7
estoy seguro de que uno podría aplicar mucho más eficiente. :)
Si necesita matrices multidimensionales, puede crear una matriz y calcular la compensación o utilizar matrices en matrices en matrices, lo que puede ser bastante malo para la memoria.(Podría ser más rápido sin embargo ...) He implementado la primera idea de esta manera:
class Matrix(object):
def __init__(self, *dims):
self._shortcuts = [i for i in self._create_shortcuts(dims)]
self._li = [None] * (self._shortcuts.pop())
self._shortcuts.reverse()
def _create_shortcuts(self, dims):
dimList = list(dims)
dimList.reverse()
number = 1
yield 1
for i in dimList:
number *= i
yield number
def _flat_index(self, index):
if len(index) != len(self._shortcuts):
raise TypeError()
flatIndex = 0
for i, num in enumerate(index):
flatIndex += num * self._shortcuts[i]
return flatIndex
def __getitem__(self, index):
return self._li[self._flat_index(index)]
def __setitem__(self, index, value):
self._li[self._flat_index(index)] = value
Puede ser utilizado como esto:
m = Matrix(4,5,2,6)
m[2,3,1,3] = 'x'
m[2,3,1,3] // -> 'x'
Por cierto, puedes obtener el infinito de coma flotante en python como' float ('inf') '. Se comporta más o menos como era de esperar, la mayoría de las operaciones solo te dan inf, y algunas te dan nan. –
(se fusionó con una pregunta anterior; lo mantuvo como el maestro como un: el OP todavía existe, b: la pregunta está mejor redactada, yc: para evitar muchos nigromantes) –