【发布时间】:2021-01-15 18:20:37
【问题描述】:
假设我有以下数组列表
dat = [np.array([[1,2],[3,4]]), np.array([[5,6]]), np.array([[1,2],[7,8],[2,3]]), np.array([[1,2],[3,4]])]
现在,对于列表中的每个元素,我想将数组的行乘以 (1/2)^k,其中 k 是每行的 (index + 1)。
以列表中的第一个和第三个数组为例
for np.array([[1,2],[3,4]), it would becomes like
np.array([[0.5,1],[3/4,1])
for np.array([[1,2], [7,8], [2,3]]), it would becomes like
np.array([[0.5,1], [7/4,2], [1/4, 3/8])
所以最终的结果会是这样的
newdat = [np.array([[0.5,1],[3/4,1]]), np.array([[5/2, 3]]), np.array([[1/2, 1],[7/4,2],[1/4,3/8]]), np.array([[0.5, 1], [3/4,1]])]
我所做的只是使用 for 循环
for i in dat:
n = i.shape[0]
mul = (1/2)**np.arrange(1,n+1)
i = i*mul[:,None]
有没有更好的方法来做到这一点?
【问题讨论】:
标签: python python-3.x numpy numpy-ndarray numpy-einsum