将 3d numpy 数组的一部分与常量相乘
Multiply part of a 3d numpy array with a constant
我连接数组 A (4, 24, 64)
和 B (1, 24, 64)
并获得 C (5, 24, 64)
。现在我想将数组 C
中对应于数组 B
中的值的那部分乘以一个常量,而数组 C
的其余部分保持不变。我试过了
C = C[4,:,:]*const
但是它将C
的所有值乘以常数。
不要完全覆盖C
,只覆盖要修改的数组部分:
C[A.shape[0]:] *= const
示例数据:
import numpy as np
np.random.seed(5)
A = np.random.randint(1, 10, size=(4, 2, 1))
B = np.random.randint(1, 10, size=(2, 2, 1))
C = np.concatenate((A, B))
C[A.shape[0]:] *= 2
A
:
[[[4]
[7]]
[[7]
[1]]
[[9]
[5]]
[[8]
[1]]]
B
:
[[[1]
[8]]
[[2]
[6]]]
C[A.shape[0]:] *= 2
:
[[[ 4]
[ 7]]
[[ 7]
[ 1]]
[[ 9]
[ 5]]
[[ 8]
[ 1]]
[[ 2]
[16]]
[[ 4]
[12]]]
我连接数组 A (4, 24, 64)
和 B (1, 24, 64)
并获得 C (5, 24, 64)
。现在我想将数组 C
中对应于数组 B
中的值的那部分乘以一个常量,而数组 C
的其余部分保持不变。我试过了
C = C[4,:,:]*const
但是它将C
的所有值乘以常数。
不要完全覆盖C
,只覆盖要修改的数组部分:
C[A.shape[0]:] *= const
示例数据:
import numpy as np
np.random.seed(5)
A = np.random.randint(1, 10, size=(4, 2, 1))
B = np.random.randint(1, 10, size=(2, 2, 1))
C = np.concatenate((A, B))
C[A.shape[0]:] *= 2
A
:
[[[4]
[7]]
[[7]
[1]]
[[9]
[5]]
[[8]
[1]]]
B
:
[[[1]
[8]]
[[2]
[6]]]
C[A.shape[0]:] *= 2
:
[[[ 4]
[ 7]]
[[ 7]
[ 1]]
[[ 9]
[ 5]]
[[ 8]
[ 1]]
[[ 2]
[16]]
[[ 4]
[12]]]