Python 使用行然后使用下一个cloumn对二维数据进行切片的最简单方法
所以我有一个非常大的数据,看起来像这样:Python 使用行然后使用下一个cloumn对二维数据进行切片的最简单方法,python,pandas,numpy,Python,Pandas,Numpy,所以我有一个非常大的数据,看起来像这样: [[1, 4, 5, 7], [8,9,33,17,], [6,0,15,21,]] 我想把它转换成指定的相等行。从第一列的所有行开始,然后是第二列。。如果所需的chunkcs数为6,则看起来是这样的 [[1,8], [6,4], [9,0], [5,33], [15,7], [17,21]] 我已经编写了这段代码,它包含了所需的数据数组和chunkcs(行)的数量,我认为这段代码优化得很糟糕,因为它需要很长时间(我有大量数据): 目前还不清楚您的数
[[1, 4, 5, 7],
[8,9,33,17,],
[6,0,15,21,]]
我想把它转换成指定的相等行。从第一列的所有行开始,然后是第二列。。如果所需的chunkcs数为6,则看起来是这样的
[[1,8],
[6,4],
[9,0],
[5,33],
[15,7],
[17,21]]
我已经编写了这段代码,它包含了所需的数据数组和chunkcs(行)的数量,我认为这段代码优化得很糟糕,因为它需要很长时间(我有大量数据):
目前还不清楚您的数组是否是真正的numpy数组,但我继续操作,就好像它是
a=np.array([[1, 4, 5, 7],
[8,9,33,17,],
[6,0,15,21,]])
我们转置以获得正确的数据顺序,然后展平,然后将展平的数组重塑为正确的形状
a.T.flatten().reshape(-1,2)
array([[ 1, 8],
[ 6, 4],
[ 9, 0],
[ 5, 33],
[15, 7],
[17, 21]])
目前还不清楚您的数组是否是真正的numpy数组,但我继续操作,就好像它是
a=np.array([[1, 4, 5, 7],
[8,9,33,17,],
[6,0,15,21,]])
我们转置以获得正确的数据顺序,然后展平,然后将展平的数组重塑为正确的形状
a.T.flatten().reshape(-1,2)
array([[ 1, 8],
[ 6, 4],
[ 9, 0],
[ 5, 33],
[15, 7],
[17, 21]])
如果NCHUNK*nSamples始终等于len(数据),则只需将转置数组重塑为所需形状即可。如果情况并非如此,则需要基于nChunks对阵列进行切片,并重塑切片后的阵列。大概
def ssliices(oldData, nChunck):
# Assuming oldData is a numpy array
a = oldData.T
nsamples = a.size//nchunks
# Only required if nChunck * nSamples != len(data)
a_sliced = a.ravel()[:(nsamples*nchunks)]
return np.reshape(a_sliced, (nchunks, a_sliced.size//nchunks))
a = np.array([[1, 4, 5, 7],
[8,9,33,17,],
[6,0,15,21,]])
ssliices(a, 5)
array([[ 1, 8],
[ 6, 4],
[ 9, 0],
[ 5, 33],
[15, 7]])
如果NCHUNK*nSamples始终等于len(数据),则只需将转置数组重塑为所需形状即可。如果情况并非如此,则需要基于nChunks对阵列进行切片,并重塑切片后的阵列。大概
def ssliices(oldData, nChunck):
# Assuming oldData is a numpy array
a = oldData.T
nsamples = a.size//nchunks
# Only required if nChunck * nSamples != len(data)
a_sliced = a.ravel()[:(nsamples*nchunks)]
return np.reshape(a_sliced, (nchunks, a_sliced.size//nchunks))
a = np.array([[1, 4, 5, 7],
[8,9,33,17,],
[6,0,15,21,]])
ssliices(a, 5)
array([[ 1, 8],
[ 6, 4],
[ 9, 0],
[ 5, 33],
[15, 7]])
Nchuck*nSamples是否总是等于len(数据)?在上面的例子中,如果nchunks=5会发生什么?nchunks*nSamples是否总是等于len(数据)?在上述示例中,如果nchunks=5会发生什么情况?