如何将列表列表除以 Python 中的另一个列表列表?
How to divide list of lists by another list of lists in Python?
我有 q = [[7,2,3],[4,5,6]]
和 r=[[6,1,2],[3,4,5]]
。我需要将 q 除以 r 中的相应元素。 (即 [[7/6,2/1,3/2],[4/3,5/4,6/5]]
)
需要输出 B = [[1.16,2,1.5],[1.33,1.25,1.2]]
代码:
B= [[float(j)/float(i) for j in q] for i in r]
。
但是,我不断收到错误消息:TypeError:float() argument must be a string or a number。我从未来进口了师。有什么建议么?
使用zip将子列表成对组合在一起,然后再次使用它组合相应的分子和分母:
>>> q = [[7,2,3],[4,5,6]]
>>> r = [[6,1,2],[3,4,5]]
>>> [[n/d for n, d in zip(subq, subr)] for subq, subr in zip(q, r)]
[[1.1666666666666667, 2.0, 1.5], [1.3333333333333333, 1.25, 1.2]]
你可以这样做:
>>> out=[]
>>> for s1, s2 in zip(q, r):
... inner=[]
... for n, d in zip(s1, s2):
... inner.append(float(n)/d)
... out.append(inner)
...
>>> out
[[1.1666666666666667, 2.0, 1.5], [1.3333333333333333, 1.25, 1.2]]
或者,使用 numpy:
>>> q=[[7.,2.,3.],[4.,5.,6.]]
>>> r=[[6.,1.,2.],[3.,4.,5.]]
>>> np.array(q)/np.array(r)
array([[ 1.16666667, 2. , 1.5 ],
[ 1.33333333, 1.25 , 1.2 ]])
或者,如果你有 int 文字:
>>> q=[[7,2,3],[4,5,6]]
>>> r=[[6,1,2],[3,4,5]]
>>> np.array(q, dtype=float)/np.array(r)
array([[ 1.16666667, 2. , 1.5 ],
[ 1.33333333, 1.25 , 1.2 ]])
我有 q = [[7,2,3],[4,5,6]]
和 r=[[6,1,2],[3,4,5]]
。我需要将 q 除以 r 中的相应元素。 (即 [[7/6,2/1,3/2],[4/3,5/4,6/5]]
)
需要输出 B = [[1.16,2,1.5],[1.33,1.25,1.2]]
代码:
B= [[float(j)/float(i) for j in q] for i in r]
。
但是,我不断收到错误消息:TypeError:float() argument must be a string or a number。我从未来进口了师。有什么建议么?
使用zip将子列表成对组合在一起,然后再次使用它组合相应的分子和分母:
>>> q = [[7,2,3],[4,5,6]]
>>> r = [[6,1,2],[3,4,5]]
>>> [[n/d for n, d in zip(subq, subr)] for subq, subr in zip(q, r)]
[[1.1666666666666667, 2.0, 1.5], [1.3333333333333333, 1.25, 1.2]]
你可以这样做:
>>> out=[]
>>> for s1, s2 in zip(q, r):
... inner=[]
... for n, d in zip(s1, s2):
... inner.append(float(n)/d)
... out.append(inner)
...
>>> out
[[1.1666666666666667, 2.0, 1.5], [1.3333333333333333, 1.25, 1.2]]
或者,使用 numpy:
>>> q=[[7.,2.,3.],[4.,5.,6.]]
>>> r=[[6.,1.,2.],[3.,4.,5.]]
>>> np.array(q)/np.array(r)
array([[ 1.16666667, 2. , 1.5 ],
[ 1.33333333, 1.25 , 1.2 ]])
或者,如果你有 int 文字:
>>> q=[[7,2,3],[4,5,6]]
>>> r=[[6,1,2],[3,4,5]]
>>> np.array(q, dtype=float)/np.array(r)
array([[ 1.16666667, 2. , 1.5 ],
[ 1.33333333, 1.25 , 1.2 ]])