我正在计算几个循环中的蛋白质容量(空间质量作用模型)(我知道,填充numpy数组可能相当慢,有更快的方法,但目前它是有效的):
import numpy as np
a = [10,20,30] # salt concentrations tested
b = [4,5,6] # measured data points
c = 2 # number of components
q = np.empty((c,len(a),len(b)))
for ii,cs in enumerate(a):
for iii,cp in enumerate(b):
for i in range(c):
q[i,ii,iii] = cs*cp基本上,Q包含每个盐浓度下每个组分的测量数据点,并具有形状(组分数量、盐浓度数量、测量数量)。代码运行得很好。但是,如果我只使用一个盐浓度,for ii,cs in enumerate(a):行就不再起作用(浮动对象是不可迭代的)。
我可以使用if语句。但是有没有更好的方法(代码不那么混乱)呢?
发布于 2014-12-29 03:50:32
当你使用单一的盐浓度,而不是写
a = 2写
a = [2]这样,您可以将其保留为一个列表,并且您的代码仍然可以工作。
顺便说一句,您可以使用以下NumPy一行程序计算q:
In [39]: np.tile(np.outer(a, b), (c, 1, 1))
Out[39]:
array([[[ 40, 50, 60],
[ 80, 100, 120],
[120, 150, 180]],
[[ 40, 50, 60],
[ 80, 100, 120],
[120, 150, 180]]])https://stackoverflow.com/questions/27680024
复制相似问题