首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从数组列表(python)中切片每个数组的第三个元素

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

Stack Overflow用户
提问于 2017-04-16 17:52:41
回答 2查看 590关注 0票数 0

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

代码语言:javascript
复制
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。

代码语言:javascript
复制
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)]

但是,在[:]前面添加另一个索引器/切片器,只需要切片列表的一部分。

不管怎么说,这样做没有循环?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-16 17:58:10

清单理解应该做好以下工作:

代码语言:javascript
复制
[row[2] for row in stump['Groups'][0]]

并将该列表作为数组处理:

代码语言:javascript
复制
np.array([...]) 

此列表中的元素

代码语言:javascript
复制
array(['a', 65000, 0], dtype=object)

是对象dtype数组,大致与相同事物的列表相同。他们的价值观参差不齐。

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

代码语言:javascript
复制
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数组进行索引:

代码语言:javascript
复制
In [61]: arr[:,2]
Out[61]: array([0, 1, 1, 1], dtype=object)

astype(int)可以将该对象数组转换为数字数组。由于字符串元素,整个2d不能转换。

票数 1
EN

Stack Overflow用户

发布于 2017-04-16 18:19:37

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

代码语言:javascript
复制
column_list = [row[2] for row in stump['Groups'][0]]

映射函数=>返回map对象

代码语言:javascript
复制
column_map = map(lambda row: row[2], stump['Groups'][0])

itertools.imap函数=>返回迭代器

代码语言:javascript
复制
column_iterator = itertools.imap(lambda row: row[2], stump['Groups'][0])

numpy数组片->返回numpy.array。要求stump‘’Groups‘为numpy.array类型

代码语言:javascript
复制
columns_array = stump['Groups'][0][:,2]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43440252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档