我正在分析一个.h5ad
文件,它的文件类型是^{
我已经基于一些集群程序创建了单独的列表,并根据它们的集群号命名了列表(即x1
、x2
、x3
、x4
…)
现在,我想取每个列表中所有单独行的平均值。当然,这可以很容易地做许多循环,但我认为这将是有趣的尝试,并在一个单一的循环。你知道吗
对单个列表执行此操作的代码如下所示:
means1 = []
for q in range(0, len(x1.var)):
means1.append(np.mean(x1.X[:, q2])
现在,我想用变量数替换means1
和x1
。
对于means1
,这可以通过使其成为dict并使用第二个for
和range(0, number)
来解决,如下所示:
x = {}
for q1 in range(0, 20):
for q2 in range(0, len(x1.var)):
x['mean' + q1] = np.mean(x1.X[:,q2])
但是因为我在x1
中使用的变量已经存在,所以不可能只使用像'x' + q1
这样的字符串格式,因为str
没有属性.X
。你知道吗
有没有办法做到这一点,或者我应该接受这是不可能的?你知道吗
第一个想法:你可以在一个外循环中迭代你的所有列表,并将你的第二个想法应用到这个上面。然后为
x
内的每个列表创建一个子目录。这样,您就可以为所有内容创建3个循环,而不是为每个列表创建一个循环:我们也可以用dict理解来代替循环(这并不能真正消除循环,但会缩短代码):
也就是说,虽然我不知道你的数据是如何构造的,但是有一个dict的形式
lists = {'x1': [the_list], 'x2': [other_list], ...}
对于这类任务总是更好的。因为没有真正好的方法来get the name of a variable,所以将它们作为字符串键存储在dict中可以更容易地使用它们。这使您可以执行以下操作:
它将返回一个
用一个循环来完成所有这些都是不可能的,至少就目前的数据结构而言是不可能的,因为您必须迭代至少两个iterable:
所有列表;
每个元素的所有元素都列出了变量。
一个简单的解决方案是构建一个包含所有
x
变量的列表,然后对其进行迭代。你知道吗可能是这样的:
这对你有用吗?你知道吗
大多数情况下,当你发现自己在使用这样的命名方案时,你真的需要一个列表或dict来代替。你知道吗
相关问题 更多 >
编程相关推荐