在数组中添加特定元素?
Adding specific elements in an Array?
y = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]])
indices_of_y = np.array([12, 0, 6, 3, 4, 9, 11, 2])
z = np.array([1 , 1, 0, 1, 1, 1, 0, 0])
x = np.array([1, 1, 1, 0, 1, 0, 0, 1])
n = 3
我想比较数组 z 和 x 的元素,并且我只想将 n 添加到 y 中 z 和 x 的元素不同的那些元素。在z和x的元素不同的情况下,我在indices_of_y.
指示的索引位置的y的元素上加上n
答案应该是:
y = [1, 2, 6, 7, 5, 6, 10, 8, 9, 13, 11, 12, 13, 14, 15, 16]
要测试元素相等性,您可以这样做
z != x # array([False, False, True, True, False, True, False, True], dtype=bool)
可用于提取所需索引的结果
indices_of_y[z != x] # array([6, 3, 9, 2])
又将其用作 y
的索引。但是由于 y
是二维的而你的索引是一维的,我们需要先使用
暂时压平 y
y.ravel() # array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16])
因为 y.ravel()
returns 一个视图而不是一个副本,我们可以直接操作所有元素并且也会看到 y
中的变化。所以你把这三个结合起来
y.ravel()[indices_of_y[z != x]] += n
并查看结果
print(y)
# array([[ 1, 2, 6, 7],
# [ 5, 6, 10, 8],
# [ 9, 13, 11, 12],
# [13, 14, 15, 16]])
y = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]])
indices_of_y = np.array([12, 0, 6, 3, 4, 9, 11, 2])
z = np.array([1 , 1, 0, 1, 1, 1, 0, 0])
x = np.array([1, 1, 1, 0, 1, 0, 0, 1])
n = 3
我想比较数组 z 和 x 的元素,并且我只想将 n 添加到 y 中 z 和 x 的元素不同的那些元素。在z和x的元素不同的情况下,我在indices_of_y.
指示的索引位置的y的元素上加上n答案应该是:
y = [1, 2, 6, 7, 5, 6, 10, 8, 9, 13, 11, 12, 13, 14, 15, 16]
要测试元素相等性,您可以这样做
z != x # array([False, False, True, True, False, True, False, True], dtype=bool)
可用于提取所需索引的结果
indices_of_y[z != x] # array([6, 3, 9, 2])
又将其用作 y
的索引。但是由于 y
是二维的而你的索引是一维的,我们需要先使用
y
y.ravel() # array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16])
因为 y.ravel()
returns 一个视图而不是一个副本,我们可以直接操作所有元素并且也会看到 y
中的变化。所以你把这三个结合起来
y.ravel()[indices_of_y[z != x]] += n
并查看结果
print(y)
# array([[ 1, 2, 6, 7],
# [ 5, 6, 10, 8],
# [ 9, 13, 11, 12],
# [13, 14, 15, 16]])