Python 旋转由一维阵列构建的矩阵
您好,我有一个排序列表,Python 旋转由一维阵列构建的矩阵,python,matrix,Python,Matrix,您好,我有一个排序列表,['a'、'b'、'c'、'd'、'e'、'f']当前显示在前端作为矩阵 ['a','c','e'], [b,'d','f'], 应该是什么时候 ['a','b','c'], [d,'e','f'], 不幸的是,我无法修改前端以水平显示对象,因此我希望能够以正确的顺序将1d数组重新排列为另一个1d数组['a'、'd'、'b'、'e'、'c',f'] 从概念上讲,我知道如何将一维数组转换为二维数组,然后旋转矩阵,然后将二维数组转换回一维数组。然而,我想知道是否有一种更具
['a'、'b'、'c'、'd'、'e'、'f']
当前显示在前端作为矩阵
['a','c','e'],
[b,'d','f'],
应该是什么时候
['a','b','c'],
[d,'e','f'],
不幸的是,我无法修改前端以水平显示对象,因此我希望能够以正确的顺序将1d数组重新排列为另一个1d数组['a'、'd'、'b'、'e'、'c',f']
从概念上讲,我知道如何将一维数组转换为二维数组,然后旋转矩阵,然后将二维数组转换回一维数组。然而,我想知道是否有一种更具python风格的方法/更快的通用算法来实现这一点。用切片跨越它:
>>> L = ['a','b','c','d','e','f']
>>> [*L[0::3], *L[1::3], *L[2::3]]
['a', 'd', 'b', 'e', 'c', 'f']
如果需要将其推广到任意维度,请考虑使用numpy:
>>> np.array(L).reshape(2,3).T.ravel().tolist()
['a', 'd', 'b', 'e', 'c', 'f']
用切片跨越它:
>>> L = ['a','b','c','d','e','f']
>>> [*L[0::3], *L[1::3], *L[2::3]]
['a', 'd', 'b', 'e', 'c', 'f']
如果需要将其推广到任意维度,请考虑使用numpy:
>>> np.array(L).reshape(2,3).T.ravel().tolist()
['a', 'd', 'b', 'e', 'c', 'f']
使用numpy
考虑到您正在谈论的GUI和GUI的大小往往会发生变化,我认为最有效的方法是使用numpy
来实现您自己的建议:
a = np.array(['a','b','c','d','e','f'])
n = len(a)
a.reshape(2, int(n)/2).T.reshape(1,n)
输出为:
array([['a', 'd', 'b', 'e', 'c', 'f']], dtype='<U1')
使用Numpy,进行来回转换
使用Numpy,不进行转换
使用带列表理解的切片
结论
似乎对于恒定的大小,最好是使用切片,然后在事先不知道大小的情况下使用列表理解进行切片。withnumpy
考虑到您正在谈论的GUI和GUI的大小往往会发生变化,我认为最有效的方法是使用numpy
来实现您自己的建议:
a = np.array(['a','b','c','d','e','f'])
n = len(a)
a.reshape(2, int(n)/2).T.reshape(1,n)
输出为:
array([['a', 'd', 'b', 'e', 'c', 'f']], dtype='<U1')
使用Numpy,进行来回转换
使用Numpy,不进行转换
使用带列表理解的切片
结论
似乎对于恒定的大小,最好是使用切片,然后在事先不知道大小的情况下使用列表理解进行切片。我不清楚数据结构。您使用的支持数组和矩阵的软件包是什么?给我们一些简单的设置代码来说明发生了什么。我不清楚数据结构。您使用的支持数组和矩阵的软件包是什么?给我们一些简单的设置代码来说明发生了什么。你知道我如何解释
a=np.array(['a','b','c','d','e')的情况吗?
。有没有什么方法可以填充空的临时值,这样就可以调整大小?添加空字符串的填充是可行的?比如,如果len(a)%2=0:a.append(“”)
?你知道我如何解释a=np.array(['a','b','c','d','e'])的情况吗
。有没有什么方法可以填充空的临时值,这样就可以调整大小?添加空字符串的填充是可行的?比如,如果len(a)%2=0:a.append(“”)
?