在python中从列表中获取正确的元素

2024-03-29 13:43:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个列表,叫它test,有3列,每列有891个元素,每个元素是一对浮点数。 我想创建一个有3列的numpy矩阵,每个列有891个元素,每个元素是浮点对的第一个条目。你知道吗

我有以下代码:

x = []
y = []
for i in range(len(test)):
    for j in range(len(test[0])):
        y.append(test[i][j][0])
    x.append(y)
    y = []

tt = numpy.matrix(x) 

这很管用,但我能用一种更有效、更优雅的方式来写吗?你知道吗

编辑: 示例:

[0.5, 0.5],[0.3, 0.4],[0.1, 0.4]
[0.7, 0.6],[0.1, 0.4],[0.2, 0.3]
[0.2, 0.5],[0.6, 0.9],[0.3, 0.2]
[0.2, 0.5],[0.6, 0.9],[0.4, 0.1]

我想要:

[0.5, 0.3, 0.1]
[0.7, 0.1, 0.2]
[0.2, 0.6, 0.3]
[0.2, 0.6, 0.4]

Tags: 代码intestnumpy元素列表forlen
2条回答

要学习Python的两个特性:iterables和generator表达式。你知道吗

您没有给出示例数据,因此我们无法验证是否看到与您相同的行为。最好把你的问题放在我们的执行上。你知道吗

如果名称比xtest更能描述意图,那就更好了。你知道吗

test = [
    [2, 4, 6],
    [3, 6, 9],
    [4, 8, 2],
    ]
import numpy

rows = []
cells = []
for test_row in test:
    for column in test_row:
        cells.append(column)
    rows.append(cells)
    cells = []

tt = numpy.matrix(rows)
  • 与其一次追加一个项目,更喜欢list comprehension,如果它有助于可读性:
import numpy

rows = [
    [column for column in row]
    for row in test]

tt = numpy.matrix(rows)

有时(在本例中不是这样),您甚至不需要列表同时存在;您只需要遍历这些项,然后丢弃该序列。那么一个生成器表达式更好;有时间就去查那个表达式。你知道吗

请注意将这些视为提高可读性的选项。它们并不总是合适的,有时会使代码过于密集,难以阅读。你知道吗

x = np.asarray(test)[:, :, 0]

就这么简单。有人可能会说,它的内存效率没有想象的那么高,因为您也在存储您不感兴趣的元素,至少是暂时的;但与嵌套python数据结构的内存使用相比,这就相形见绌了。你知道吗

相关问题 更多 >