gpt4 book ai didi

python - 更改 numpy 数组中的元素

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

我一直在筛选 Numpy 教程,并且尝试了几个对我不起作用的函数。我想要一个数组,例如:

    import numpy as np
a = np.array([[[1, 2, 3, 4]],[[5, 6, 7, 8]],[[1, 2, 3, 4]],[[5, 6, 7, 8]]])

具有以下形式

     [[[1 2 3 4]]

[[4 5 6 7]]

[[1 2 3 4]]

[[4 5 6 7]]]

这是一个不同的函数给我的结果的格式,所以,格式不是通过选择的。我想做的是让所有其他元素都变成负数,所以它看起来像

     [[[1 -2 3 -4]]

[[4 -5 6 -7]]

[[1 -2 3 -4]]

[[4 -5 6 -7]]]

我尝试了 np.negative(a) 并使每个元素都为负数。有一个 where 选项我认为我可以利用,但是,我找不到一种方法让它只影响所有其他组件。我还构建了一个双循环以将数组作为列表移动,但是,我似乎无法从这些列表重建数组

     new = np.array([])

for n in range(len(a)):
for x1,y1,x2,y2 in a[n]:
y1 = -1 * y1
y2 = -1 * y2
row = [x1, y1, x2, y2]
new = np.append(new,row)
print(a)

我觉得我把它弄得太复杂了,但是,我还没有想到更好的方法。

最佳答案

您可以通过 -1slice 相结合,对每隔一列进行倍增:

a[...,1::2] *= -1
# here use ... to skip the first few dimensions, and slice the last dimension with 1::2
# which takes element from 1 with a step of 2 (every other element in the last dimension)
# now multiply with -1 and assign it back to the exact same locations

a
#array([[[ 1, -2, 3, -4]],

# [[ 5, -6, 7, -8]],

# [[ 1, -2, 3, -4]],

# [[ 5, -6, 7, -8]]])

可以看到更多关于省略号here .

关于python - 更改 numpy 数组中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44959045/

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