numpy的python数组切片

问题描述

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

[[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

解决方法

您只需提供所需的列,

>>> 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,123.77777778],[183.11111111,111.88888889,118.88888889],[173.77777778,106.77777778,114.44444444]])
>>> data[:,[0,2]]
array([[240.66666667,114.44444444]])
>>> 
,

您可以使用numpy.delete函数轻松做到这一点,如下所示:

a = np.array([[240.66666667,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]]