我有一个字典,它的第一个键'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)]但是,在[:]前面添加另一个索引器/切片器,只需要切片列表的一部分。
不管怎么说,这样做没有循环?
谢谢。
发布于 2017-04-16 17:58:10
清单理解应该做好以下工作:
[row[2] for row in stump['Groups'][0]]并将该列表作为数组处理:
np.array([...]) 此列表中的元素
array(['a', 65000, 0], dtype=object)是对象dtype数组,大致与相同事物的列表相同。他们的价值观参差不齐。
如果将整个列表包装在np.array (或np.stack)中,就会得到一个2d对象dtype数组。
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)可以作为任何其他2d数组进行索引:
In [61]: arr[:,2]
Out[61]: array([0, 1, 1, 1], dtype=object)astype(int)可以将该对象数组转换为数字数组。由于字符串元素,整个2d不能转换。
发布于 2017-04-16 18:19:37
列表理解=>返回列表对象
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‘为numpy.array类型
columns_array = stump['Groups'][0][:,2]https://stackoverflow.com/questions/43440252
复制相似问题