我有以下(4x8)numpy数组。
In [5]: z
Out[5]:
array([['1A34', 'RBP', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0],
['1A9N', 'RBP', 0.0456267, 0.0539268, 0.331932, 0.0464031,
4.41336e-06, 0.522107],
['1AQ3', 'RBP', 0.0444479, 0.201112, 0.268581, 0.0049757,
1.28505e-12, 0.480883],
['1AQ4', 'RBP', 0.0177232, 0.363746, 0.308995, 0.00169861, 0.0,
0.307837]], dtype=object)
In [6]: z.shape
Out[6]: (4, 8)
我想做的是提取上述数组中的第0,2,4列,得到(4×3)数组,看起来像这样。
array([['1A34', 0.0, 0.0],
['1A9N', 0.0456267, 0.331932],
['1AQ3', 0.0444479, 0.268581],
['1AQ4', 0.0177232, 0.308995]])
有什么方法可以做到这一点?注意,上面的索引只是例子。实际中可以是很不规则的,比如第0、3、4列。
使用分片法。
>>> arr = np.array([['1A34', 'RBP', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0],
['1A9N', 'RBP', 0.0456267, 0.0539268, 0.331932, 0.0464031,
4.41336e-06, 0.522107],
['1AQ3', 'RBP', 0.0444479, 0.201112, 0.268581, 0.0049757,
1.28505e-12, 0.480883],
['1AQ4', 'RBP', 0.0177232, 0.363746, 0.308995, 0.00169861, 0.0,
0.307837]], dtype=object)
>>> arr[:,:5:2]
array([['1A34', 0.0, 0.0],
['1A9N', 0.0456267, 0.331932],
['1AQ3', 0.0444479, 0.268581],
['1AQ4', 0.0177232, 0.308995]], dtype=object)
如果列的索引是不规则的,那么你可以做这样的事情。
>>> indices = [0, 3, 4]
>>> arr[:, indices]
array([['1A34', 1.0, 0.0],
['1A9N', 0.0539268, 0.331932],
['1AQ3', 0.201112, 0.268581],
['1AQ4', 0.363746, 0.308995]], dtype=object)
请注意,切片和分片之间有一个微妙但实质上的区别。基本索引),并使用序列进行索引(也称为 高级索引 或花式索引)。) 当使用一个分片,如 arr[:, :5:2]
,没有数据被复制,我们得到的是一个 观点 的结果。这意味着,将 arr[:, :5:2]
会影响 arr
本身。有了花哨的索引 arr[:, [0, 3, 4]]
保证是一个副本:这样会占用更多的内存,而突变这个结果不会影响到 arr
.
你可以通过以下方式访问numpy数组的列。
array[:,column_number]
要获得特定列的数组,你可以做如下操作。
z = array([[['1A34', 'RBP', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0],
['1A9N', 'RBP', 0.0456267, 0.0539268, 0.331932, 0.0464031,
4.41336e-06, 0.522107],
['1AQ3', 'RBP', 0.0444479, 0.201112, 0.268581, 0.0049757,
1.28505e-12, 0.480883],
['1AQ4', 'RBP', 0.0177232, 0.363746, 0.308995, 0.00169861, 0.0,
0.307837]], dtype=object]) #your array here
op_array = array([ [z:,0], z[:,2], z[:,3] ])
op_array的第0,2,3列是行。
所以你需要对它进行转置以得到所需格式的输出数组。
op_array.transpose()
op_array现在会变成下面的样子。
op_array([['1A34', 0.0, 0.0],
['1A9N', 0.0456267, 0.331932],
['1AQ3', 0.0444479, 0.268581],
['1AQ4', 0.0177232, 0.308995])