fre*_*ger 5 python arrays numpy
我有2个具有相同形状的numpy阵列.现在我想将除0之外的所有值从数组2复制到数组1.
数组1:
[1, 1, 1]
[1, 1, 1]
[1, 1, 1]
Run Code Online (Sandbox Code Playgroud)
数组2:
[0, 2, 0]
[4, 0, 0]
[6, 6, 0]
Run Code Online (Sandbox Code Playgroud)
结果现在应该如下所示:
[1, 2, 1]
[4, 1, 1]
[6, 6, 1]
Run Code Online (Sandbox Code Playgroud)
这在Python中怎么可能?
Tai*_*Tai 13
nonzero 将返回不为0的数组的索引.
idx_nonzero = B.nonzero()
A[idx_nonzero] = B[idx_nonzero]
Run Code Online (Sandbox Code Playgroud)
nonzero也什么numpy.where时候只有一个条件被传递返回.因此,等价地,我们可以做
idx_nonzero = np.where(B != 0) # (B != 0).nonzero()
A[idx_nonzero] = B[idx_nonzero]
Run Code Online (Sandbox Code Playgroud)
该解决方案就位.如果您需要创建一个新数组,请参阅@jp_data_analysis'的答案.
np.where支持这个.下面的解决方案创建一个新数组 对于就地替代方案,请参阅@ Tai的答案.
A = np.array(
[[1, 1, 1],
[1, 1, 1],
[1, 1, 1]])
B = np.array(
[[0, 2, 0],
[4, 0, 0],
[6, 6, 0]])
C = np.where(B==0, A, B)
# [1, 2, 1]
# [4, 1, 1]
# [6, 6, 1]
Run Code Online (Sandbox Code Playgroud)