我试图通过基本功能将X名称分配给N个变量。 我一直在寻找钥匙,但我总能找到相同的答案:
这是一个坏主意,为什么不用字典......
def create_matrix(m,nf,nc):
m = np.empty((nf,nc), dtype=np.int)
for i in range(nf):
for j in range(nc):
m[i][j] = int(input('Value: '))
我想建立N" matrices",我需要在每个之前声明m = np.empty((nf,nc),dtype = np.int),答案是,我怎么可能" dinamize"那个功能是为了以后跟他们一起运作? F.E:
create_matrix1(m1,2,3) create_matrix2(m2,2,3) 。 。 。 create_matrixn(MN,2,3) m1 + m2 + m5 = x
提前致谢
嗯,这很有效,谢谢!
>>> mats
[array([[1, 2],
[3, 4]]), array([[5, 6],
[7, 8]]), array([[ 9, 10],
[11, 12]])]
现在我试图找出如何引用垫子[1(x,y)]以便与它们一起操作
>>> mats[1[[1][1]]]
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
mats[1[[1][1]]]
IndexError: list index out of range
>>> mats[1[1][1]]
Traceback (most recent call last):
File "<pyshell#8>", line 1, in <module>
mats[1[1][1]]
TypeError: 'int' object is not subscriptable
你是对的。
>>> mats[1][1][1]
8
我以为我尝试了每一个可能性,我觉得我很累,有时间睡觉。
非常感谢!
答案 0 :(得分:3)
因为你不知道有多少矩阵,给它们起名字是行不通的,不是吗?它也很快变得笨拙,如果有43个矩阵你必须使用变量名称,如m1到m43,并在需要时输入这些名称,并且如果下次需要44,那么整个加载更多的输入,或者什么如果你只需要另外3次?事实上,它是Python(和其他编程语言)的一个特性,它可以存储对矩阵(也包括对象,函数......)之类的引用,因此您不必为矩阵命名。 ,只要你能够保持足够的参考。将参考文献存储在例如列表或字典。
然后,不是传入矩阵m,而是让函数返回对新矩阵的引用,并且调用代码将引用存储在列表中,如下所示:
def create_matrix(nf,nc):
m = np.empty((nf,nc), dtype=np.int)
for i in range(nf):
for j in range(nc):
m[i][j] = int(input('Value: '))
return m
mats = []
# for this example let's create 43 matrices
for i in range(43):
mats.append(create_matrix(100,13)
print mats
现在mats [0]是第一个,mats [1]是第二个,依此类推。
想到这一点的一种方法是,你想要创建一个动态矩阵m1,实际上存储在我的例子中的垫子[0]中,m2在垫子[1]中,m3在垫子[2]中。 (因为列表从0开始编制索引,第一项是在mats [0]中)
您也可以使用相同的功能以您想要的样式创建矩阵,例如:
m1 = create_matrix(100,13)
m2 = create_matrix(100,13)
m3 = create_matrix(100,13)
...
要参考这些矩阵,您可以使用例如m1(x,y)
使用mats[1](x,y)
- mats[1]
会替换m1
,如果您明白我的意思。或者您使用m1[x][y]
的位置,请使用mats[1][x][y]