我有一个python列表(例如lst = [2, 3, 5]
)。对应于lst
的每个元素,我想用以下方式构造一个numpy矩阵:它应该是一个与lst
的所考虑的元素大小相同的正方形数组,并且应该用该元素的平方值填充。你知道吗
这就是我目前处理问题的方式:
import numpy as np
lst = [2,3,5]
for i in range(len(lst)):
globals()['mat'+str(lst[i])] = np.full( (lst[i],lst[i]), lst[i]**2 )
print globals()['mat'+str(2)]
print " "
print globals()['mat'+str(3)]
print " "
print globals()['mat'+str(5)]
[[4 4]
[4 4]]
[[9 9 9]
[9 9 9]
[9 9 9]]
[[25 25 25 25 25]
[25 25 25 25 25]
[25 25 25 25 25]
[25 25 25 25 25]
[25 25 25 25 25]]
不使用全局变量执行此任务的有效方法是什么?你知道吗
无论如何命名或生成数组,这里都没有效率问题。不管命名方式如何,都必须对每个数组使用
np.full
。一旦你创建了一个数组,你就可以把它收集到一个列表,一个字典或者把它赋给一个变量。你知道吗我将在一个列表中收集数组:
如果必须指定名称,请使用以下命令:
这种
globals()[]
技巧是有效的,但不是很好的Python编程实践。它看起来更像是BASIC世界的遗留物,而不是惯用的Python。收集列表和字典中的内容,而不是动态生成的全局变量。你知道吗说到字典,我们可以将列表转换为具有以下内容的列表:
(这里我使用的是新的
f-literal
字符串语法。)相关问题 更多 >
编程相关推荐