我有一个名为A
的数组:
A = np.array([[-1, 2, -3],
[4, -5, 6],
[-7, 8, -9]])
现在我想提取正面和负面部分,并将它们保存在两个新数组中,如:
B = np.array([[0, 2, 0],
[4, 0, 6],
[0, 8, 0]])
表示正面部分和
C = np.array([[-1, 0, -3],
[0, -5, 0],
[-7, 0, -9]])
负面部分。
您能否指导我如何从Python 3.6中的数组B
获取数组C
和A
?
答案 0 :(得分:1)
使用两个np.where
来替换零以下零以下的值:
>>> import numpy as np
>>> A = np.array([[-1, 2, -3], [4, -5, 6], [-7, 8, -9]])
>>> B = np.where(A > 0, A, 0)
>>> C = np.where(A < 0, A, 0)
>>> B
array([[0, 2, 0],
[4, 0, 6],
[0, 8, 0]])
>>> C
array([[-1, 0, -3],
[ 0, -5, 0],
[-7, 0, -9]])
np.where
的三个参数形式广播参数,第一个和第二个已经具有相同的形状(3, 3)
,但0
将被广播到:
>>> Ag0_bc, B_bc, zero_bc = np.broadcast_arrays(A > 0, A, 0)
>>> Ag0_bc
array([[False, True, False],
[ True, False, True],
[False, True, False]], dtype=bool)
>>> zero_bc
array([[0, 0, 0],
[0, 0, 0],
[0, 0, 0]])
然后np.where
将创建一个新数组,并使用第二个参数(A
)中的相应元素填充新数组中的每个元素,如果第一个参数中的元素(A > 0
)是True
并从第三个参数0
获取元素,以防False
。