如何从字符串块创建2D numpy数组

时间:2019-10-09 15:31:13

标签: python numpy

借助列表理解功能,我可以采用字符串格式的20x20数字块,并将其转换为整数列表。数字用空格分隔,行用换行符分隔。

grid = [[int(x) for x in line.split()] for line in nums.split('\n')]

但是,我要使用numpy来提高速度。我可以在中间列表中使用np.asarray(),但我认为这不是有效使用numpy。

我也尝试使用np.fromstring(),但是我不知道使它适用于2D数组的逻辑。

是否可以通过不创建中间python列表来完成此任务?

2 个答案:

答案 0 :(得分:4)

您可以使用np.fromstring设置一个空格作为分隔符,并将reshape设置为所需的形状:

np.fromstring(s, sep=' ').reshape(20, 20)

或者,按照@mihammad的解决方案,作为更通用的解决方案:

rows = s.count('\n') + 1
np.fromstring(s, sep=' ').reshape(-1, rows)

答案 1 :(得分:2)

对于任何2D网格更通用:

%*