使列表列表变平是一个众所周知的问题,但是如何以最
[In]: mylist = [[[1,2,3], [4]], [[5,6], [7,8]]]
[Out]: array([[1, 2, 3, 4],
[5, 6, 7, 8]])
,但即使将其完全展平成一个长长的列表也可以(可以很容易地将其转换为正确形状的数组)。典型的输出数组的尺寸为(10000,10),因此循环遍历将非常无效的行。所有想法将不胜感激!
(编辑) 我能想到的最佳解决方案:
import itertools
for i in range(len(mylist)):
mylist[i] = list(itertools.chain.from_iterable(mylist[i]))
np.array(mylist)
答案 0 :(得分:0)
可能使用numpy.append
:
import numpy as np
rows = [[[1, 2, 3], [4]], [[5, 6], [7, 8]]]
result = np.array([np.append(value[0], value[1:]) for value in rows])
print(result)
输出
[[1 2 3 4]
[5 6 7 8]]
函数numpy.append
展平值[1:]。一种替代方法是使用concatenate
和ravel
:
rows = [[[1], [2], [3]], [[4], [5], [6]]]
result = np.array([np.concatenate(value).ravel() for value in rows])
print(result)
输出
[[1 2 3]
[4 5 6]]
concatenate
函数加入一个数组序列,而np.ravel
返回一个连续的扁平数组。您可以通过np.flatten来更改np.ravel
。