借助列表理解功能,我可以采用字符串格式的20x20数字块,并将其转换为整数列表。数字用空格分隔,行用换行符分隔。
grid = [[int(x) for x in line.split()] for line in nums.split('\n')]
但是,我要使用numpy来提高速度。我可以在中间列表中使用np.asarray(),但我认为这不是有效使用numpy。
我也尝试使用np.fromstring()
,但是我不知道使它适用于2D数组的逻辑。
是否可以通过不创建中间python列表来完成此任务?
答案 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网格更通用:
%*