NumPy Python数组切片

3

我有一个如下所示的数组:

[[240.66666667 171.22222222 158.33333333]
 [218.66666667 134.77777778 143.33333333]
 [197.33333333 118.55555556 128.44444444]
 [195.22222222 119.33333333 126.11111111]
 [196.77777778 118.55555556 123.77777778]
 [183.11111111 111.88888889 118.88888889]
 [173.77777778 106.77777778 114.44444444]]

我想要将所有行的第一和第三列切片,并希望获得以下输出:
[[240.66666667 158.33333333]
 [218.66666667 143.33333333]
 [197.33333333 128.44444444]
 [195.22222222 126.11111111]
 [196.77777778 123.77777778]
 [183.11111111 118.88888889]
 [173.77777778 114.44444444]]

有人有任何想法吗?

输出屏幕截图:

enter image description here

2个回答

6

您可以像这样只提供您想要的列,

>>> data
array([[240.66666667, 171.22222222, 158.33333333],
       [218.66666667, 134.77777778, 143.33333333],
       [197.33333333, 118.55555556, 128.44444444],
       [195.22222222, 119.33333333, 126.11111111],
       [196.77777778, 118.55555556, 123.77777778],
       [183.11111111, 111.88888889, 118.88888889],
       [173.77777778, 106.77777778, 114.44444444]])
>>> data[:, [0,2]]
array([[240.66666667, 158.33333333],
       [218.66666667, 143.33333333],
       [197.33333333, 128.44444444],
       [195.22222222, 126.11111111],
       [196.77777778, 123.77777778],
       [183.11111111, 118.88888889],
       [173.77777778, 114.44444444]])
>>> 

嘿!看起来它工作了,但它选择了第0列和第1列!这很奇怪,因为它没有选择第三列。 - Nisarg Dave
这很奇怪。你是否指定了[0,2]作为第一列和第三列,或者我们可以看到你得到的输出? - han solo
刚刚编辑了问题,附上了输入的reaction_data截图。是的,我使用了ARRAY[:, [0,2]]。 - Nisarg Dave
文本会更好。你能展示一下你所做的操作吗?因为 arr[:, [0,2]] 不应该选择第一列。我唯一能想到的方式是使用 arr[:, 0:2] 而不是 arr[:, [0, 2]] 才能选择第一列。 - han solo
@NisargDave,你能尽快回复我吗?我将在10分钟内离开 :) - han solo
刚刚解决了,有点奇怪。我退出了虚拟环境并重新启动了进程,现在它可以工作了。谢谢! - Nisarg Dave

0

您可以使用numpy.delete函数轻松地完成此操作,如下所示:

a = np.array([[240.66666667, 171.22222222, 158.33333333],
              [218.66666667, 134.77777778, 143.33333333],
              [197.33333333, 118.55555556, 128.44444444],
              [195.22222222, 119.33333333, 126.11111111],
              [196.77777778, 118.55555556, 123.77777778],
              [183.11111111, 111.88888889, 118.88888889],
              [173.77777778, 106.77777778, 114.44444444]])

a = np.delete(a,1,axis=1)

通过这段代码,你可以得到你想要的输出。

Output: 
[[240.66666667 158.33333333]
 [218.66666667 143.33333333]
 [197.33333333 128.44444444]
 [195.22222222 126.11111111]
 [196.77777778 123.77777778]
 [183.11111111 118.88888889]
 [173.77777778 114.44444444]]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接