【发布时间】:2018-12-10 08:06:50
【问题描述】:
我正在尝试编写一个函数,该函数接受一个数组数组,并在某些条件下将其重组为不同的形式。比如说:
array = [
["City1","Spanish", "163"],
["City1", "French", "194"],
["City2","English", "1239"],
["City2","Spanish", "1389"],
["City2", "French", "456"]
]
所以我想创建一个按城市字母顺序排序的新数组,以及按语言排序的列(按列排序可选),任何空值都将被 0 替换。例如,上述数组的输出应该是:
[
[0, 163, 194],
[1239, 1389, 456]
]
我写了这个方法,但我不确定它在逻辑上是否有意义。它绝对是硬编码的,我正在努力使它可以用于上述格式的任何输入。
import numpy as np
new_array = [[]]
x = 'City1'
y = 'City2'
def solution(arr):
for row in arr:
if row[0]==x:
new_array[-1].append(row[2])
else:
x = x + 1
c.append([row[2]])
solution(array)
我知道我需要修正语法,还需要编写一个循环来按字母顺序排序。对此的任何帮助将不胜感激,我想了解如何遍历这样的数组并执行不同的功能并将数组重组为新格式。
【问题讨论】:
-
如我所见,您有一个列表,在您的情况下,我猜是关于城市的数据?我建议使用不可变数据类型来存储数据,例如元组(或命名元组)。无论如何,为了处理您的问题,我强烈建议使用内置函数。这样你就不需要循环,做一些魔术。您可以使用的一些功能是:groupby、sorted、map 等。一旦您正确地构建了数据,就很容易处理它。恐怕在你的情况下数据是一团糟..
标签: python arrays python-3.x numpy sorting