Numpy 从数组列表的第三个元素切片每个数组的第三个元素(python)

Numpy 从数组列表的第三个元素切片每个数组的第三个元素(python),numpy,slice,Numpy,Slice,我有一个字典,它的键“Groups”的第一个元素包含数组列表 stump['Groups'][0] [array(['a', 65000, 0], dtype=object), array(['a', 95000, 1], dtype=object), array(['b', 78000, 1], dtype=object), array(['b', 19000, 1], dtype=object)] 我想对每行的第三列进行切片,并对它们执行一些操作。 所以第三列的值应该是[0,1,1

我有一个字典,它的键“Groups”的第一个元素包含数组列表

stump['Groups'][0]

[array(['a', 65000, 0], dtype=object),
 array(['a', 95000, 1], dtype=object),
 array(['b', 78000, 1], dtype=object),
 array(['b', 19000, 1], dtype=object)]
我想对每行的第三列进行切片,并对它们执行一些操作。 所以第三列的值应该是[0,1,1,1]

stump['Groups'][0][:]
#results in the whole list
[array(['a', 65000, 0], dtype=object),
 array(['a', 95000, 1], dtype=object),
 array(['b', 78000, 1], dtype=object),
 array(['b', 19000, 1], dtype=object)]
但是,在
[:]
前面添加另一个索引器/切片器,只会切片该列表的一部分

不管怎么说,要做到这一点没有循环


多谢各位

列表理解应完成以下工作:

[row[2] for row in stump['Groups'][0]]
要将列表作为数组使用,请执行以下操作:

np.array([...]) 
此列表的元素

array(['a', 65000, 0], dtype=object)
是对象数据类型数组,与相同内容的列表大致相同。他们的价值观参差不齐

如果将整个列表包装在
np.array
(或
np.stack
)中,则会得到一个2d对象数据类型数组

In [58]: arr=np.array(alist)
In [59]: arr.shape
Out[59]: (4, 3)
In [60]: arr
Out[60]: 
array([['a', 65000, 0],
       ['a', 95000, 1],
       ['b', 78000, 1],
       ['b', 19000, 1]], dtype=object)
可以作为任何其他二维数组索引的:

In [61]: arr[:,2]
Out[61]: array([0, 1, 1, 1], dtype=object)

astype(int)
可以将该对象数组转换为数字数组。由于字符串元素的原因,无法转换完整的2d格式。

列表理解应完成以下工作:

[row[2] for row in stump['Groups'][0]]
要将列表作为数组使用,请执行以下操作:

np.array([...]) 
此列表的元素

array(['a', 65000, 0], dtype=object)
是对象数据类型数组,与相同内容的列表大致相同。他们的价值观参差不齐

如果将整个列表包装在
np.array
(或
np.stack
)中,则会得到一个2d对象数据类型数组

In [58]: arr=np.array(alist)
In [59]: arr.shape
Out[59]: (4, 3)
In [60]: arr
Out[60]: 
array([['a', 65000, 0],
       ['a', 95000, 1],
       ['b', 78000, 1],
       ['b', 19000, 1]], dtype=object)
可以作为任何其他二维数组索引的:

In [61]: arr[:,2]
Out[61]: array([0, 1, 1, 1], dtype=object)

astype(int)
可以将该对象数组转换为数字数组。由于字符串元素,无法转换完整的2d对象。

列表理解=>返回列表对象

column_list = [row[2] for row in stump['Groups'][0]]
map函数=>返回映射对象

column_map = map(lambda row: row[2], stump['Groups'][0])
itertools.imap函数=>返回迭代器

column_iterator = itertools.imap(lambda row: row[2], stump['Groups'][0])
numpy数组切片->返回numpy.array。 要求stump['Groups'][0]为numpy.array类型

columns_array = stump['Groups'][0][:,2]

列表理解=>返回列表对象

column_list = [row[2] for row in stump['Groups'][0]]
map函数=>返回映射对象

column_map = map(lambda row: row[2], stump['Groups'][0])
itertools.imap函数=>返回迭代器

column_iterator = itertools.imap(lambda row: row[2], stump['Groups'][0])
numpy数组切片->返回numpy.array。 要求stump['Groups'][0]为numpy.array类型

columns_array = stump['Groups'][0][:,2]

是的,我忘了我可以将列表转换成数组,这将允许我像任何2d数组一样进行索引。谢谢=)是的,我忘了我可以将列表转换成数组,这将允许我像任何2d数组一样进行索引。谢谢=)