gpt4 book ai didi

python - 在数组中添加特定元素?

转载 作者:太空宇宙 更新时间:2023-11-03 15:17:09 25 4
gpt4 key购买 nike

 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的元素不同,我将n添加到indices_of_y中指示的索引位置的y元素中。

答案应该是:

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 是 2D 而您的索引是 1D,我们需要首先使用

暂时压平 y
y.ravel()            #  array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16])

由于y.ravel()返回一个 View 而不是副本,我们可以直接操作所有元素,并且也会看到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]])

关于python - 在数组中添加特定元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43799138/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com