我一直在筛选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)
我觉得我让这太复杂了,但是,我没有想到更好的方法。
答案 0 :(得分:2)
您可以通过 -1 与 slice 结合使用其他所有列:
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。
答案 1 :(得分:2)
> Dir /B
11foo.pcx
12red.pcx
13bar.pcx
3366.pcx
96blue.pcx
9red.pcx
alipro.pcx
> SO_44875749.cmd
11foo.pcx
13bar.pcx
3366.pcx
alipro.pcx
沿最后一轴取每个其他元素并将它们乘以-1。