【发布时间】:2017-10-09 20:19:51
【问题描述】:
我有一个 3d np.array x,带有x.shape == (r, n, m)。
这意味着单独的维度r,每个元素都是一个二维数组n-by-m。
对于这些二维数组中的每一个,我想将它乘以一个向量。
这是一个例子。
import bumpy as np
x = np.array([[[1, 2, 3, 4],
[4, 5, 6, 7],
[7, 8, 9, 10]],
[[4, 5, 6, 7],
[7, 8, 9, 10],
[10, 11, 12, 13]],
[[7, 8, 9, 10],
[10, 11, 12, 13],
[13, 14, 15, 16]]])
所以x.shape 是(r=3, n=3, m=4)。仅第一维就有三个二维数组
r1 = [[1, 2, 3, 4],
[4, 5, 6, 7],
[7, 8, 9, 10]]
r2 = [[4, 5, 6, 7],
[7, 8, 9, 10],
[10, 11, 12, 13]]
r3 = [[7, 8, 9, 10],
[10, 11, 12, 13],
[13, 14, 15, 16]]]
对于每个二维数组,我想做同样的操作:第一行乘以k**(n-1),第二行乘以k**(n-2),以此类推。最后一行乘以k**(n-n)。
以r1为例:
k = 0.9
n = 3
r1_operated = np.empty_like(r1)
r1_operated[0] = r1[0] * k**(n-1) # n = 3, so (n-1) = 2
r1_operated[1] = r1[1] * k**(n-2) # n = 3, so (n-2) = 1
r1_operated[1] = r1[2] * k**(n-n) # n = 3, so (n-n) = 0
我上面写的很丑,如果r 和n 非常大,可能会很粗。
您知道编写此算法的任何优雅高效的方法吗?
我正在使用 Python3。谢谢!
【问题讨论】:
标签: python-3.x numpy multidimensional-array