np.tile重复一维数组

时间:2016-06-11 18:17:13

标签: python numpy

我有一个ndarray,A, 并且我希望将这个ndarray元素乘以另一个1D数组b,其中我假设某些A.shape[i] = len(b)i。我在申请中需要这种普遍性。

我可以使用np.tile执行此操作,如下所示:

A = np.random.rand(2,3,5,9)
b = np.random.rand(5)
i = 2
b_shape = np.ones(len(A.shape), dtype=np.int)
b_shape[i] = len(b)
b_reps = list(A.shape)
b_reps[i] = 1
B = np.tile(b.reshape(b_shape), b_reps)

# Here B.shape = A.shape and
# B[i,j,:,k] = b for all i,j,k

这让我觉得难看。有一个更好的方法吗?

1 个答案:

答案 0 :(得分:2)

对于这个特定的例子,下面的代码可以解决这个问题:

result = A*b[:, np.newaxis]

对于i的任何值,请尝试以下操作:

A2, B = np.broadcast_arrays(A, b)
result = A2*B