Python Numpy数组[?5]到带有[?5]的五个数组
我有一个[?5]数组:(?=3) 我希望有5个(行的#)独立数组(?5),如下所示:Python Numpy数组[?5]到带有[?5]的五个数组,python,arrays,numpy,Python,Arrays,Numpy,我有一个[?5]数组:(?=3) 我希望有5个(行的#)独立数组(?5),如下所示: [array([[ 0, 1, 2, 3, 4], [25, 26, 27, 28, 29], [50, 51, 52, 53, 54]]), array([[ 5, 6, 7, 8, 9], [30, 31, 32, 33, 34], [55, 56, 57, 58, 59]]), array([[10, 11, 12, 13, 14], [35, 36,
[array([[ 0, 1, 2, 3, 4],
[25, 26, 27, 28, 29],
[50, 51, 52, 53, 54]]),
array([[ 5, 6, 7, 8, 9],
[30, 31, 32, 33, 34],
[55, 56, 57, 58, 59]]),
array([[10, 11, 12, 13, 14],
[35, 36, 37, 38, 39],
[60, 61, 62, 63, 64]]),
array([[15, 16, 17, 18, 19],
[40, 41, 42, 43, 44],
[65, 66, 67, 68, 69]]),
array([[20, 21, 22, 23, 24],
[45, 46, 47, 48, 49],
[70, 71, 72, 73, 74]])]
这是一种简单的最好是一个/两个numpy的操作方式吗 是的,有:
numpy.transpose
。您可以在三维结构的轴上选择任意序列
import numpy as np
aaa=np.array([[[ 0 , 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19],
[20, 21, 22, 23, 24]],
[[25, 26, 27, 28, 29],
[30, 31, 32, 33, 34],
[35, 36, 37, 38, 39],
[40, 41, 42, 43, 44],
[45, 46, 47, 48, 49]],
[[50, 51, 52, 53, 54],
[55, 56, 57, 58, 59],
[60, 61, 62, 63, 64],
[65, 66, 67, 68, 69],
[70, 71, 72, 73, 74]]])
bb= np.transpose(aaa,axes=[1,0,2])
print bb
输出:
[[[ 0 1 2 3 4]
[25 26 27 28 29]
[50 51 52 53 54]]
[[ 5 6 7 8 9]
[30 31 32 33 34]
[55 56 57 58 59]]
[[10 11 12 13 14]
[35 36 37 38 39]
[60 61 62 63 64]]
[[15 16 17 18 19]
[40 41 42 43 44]
[65 66 67 68 69]]
[[20 21 22 23 24]
[45 46 47 48 49]
[70 71 72 73 74]]].
要访问子阵列,只需使用如下索引:
c= b[0]
print c
输出:
[[ 0 1 2 3 4]
[25 26 27 28 29]
[50 51 52 53 54]]
是的,有:
numpy.transpose
。您可以在三维结构的轴上选择任意序列
import numpy as np
aaa=np.array([[[ 0 , 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19],
[20, 21, 22, 23, 24]],
[[25, 26, 27, 28, 29],
[30, 31, 32, 33, 34],
[35, 36, 37, 38, 39],
[40, 41, 42, 43, 44],
[45, 46, 47, 48, 49]],
[[50, 51, 52, 53, 54],
[55, 56, 57, 58, 59],
[60, 61, 62, 63, 64],
[65, 66, 67, 68, 69],
[70, 71, 72, 73, 74]]])
bb= np.transpose(aaa,axes=[1,0,2])
print bb
输出:
[[[ 0 1 2 3 4]
[25 26 27 28 29]
[50 51 52 53 54]]
[[ 5 6 7 8 9]
[30 31 32 33 34]
[55 56 57 58 59]]
[[10 11 12 13 14]
[35 36 37 38 39]
[60 61 62 63 64]]
[[15 16 17 18 19]
[40 41 42 43 44]
[65 66 67 68 69]]
[[20 21 22 23 24]
[45 46 47 48 49]
[70 71 72 73 74]]].
要访问子阵列,只需使用如下索引:
c= b[0]
print c
输出:
[[ 0 1 2 3 4]
[25 26 27 28 29]
[50 51 52 53 54]]
仅提出一个替代方案,是
np的另一个替代方案。仅涉及一对轴时进行转置
a, b, c, d, e = arr.swapaxes(0, 1) # swap axes 0, 1
swapax
将始终返回数组视图,其结果与@roadrunner66提出的np.transpose
相同。它通常比transpose
快得多,并且在numpy
的代码中大量使用,以将重要维度放在前面。仅提出一个替代解决方案,是np的另一个替代方案。当只涉及一对轴时,transpose
a, b, c, d, e = arr.swapaxes(0, 1) # swap axes 0, 1
swapax
将始终返回数组视图,其结果与@roadrunner66提出的np.transpose
相同。它通常比转置
快得多,并且在numpy
的代码中大量使用,将重要维度放在前面。谢谢!那么,我应该应用split来获得五个数组吗?我能一次完成吗?不需要拆分。要访问这五个子数组,只需使用索引:print b[0]
print b[1]
等,或者重新分配到您喜欢的任何位置:c1=b[0]
等。@SungKim此外,您还可以编写a,b,c,d,e=np.transpose(aaa,axes=(1,0,2))
。谢谢!那么,我应该应用split来获得五个数组吗?我能一次完成吗?不需要拆分。要访问这五个子数组,只需使用索引:print b[0]
print b[1]
等,或者重新分配到您喜欢的任何位置:c1=b[0]
等@SungKim此外,您可以只编写a,b,c,d,e=np.transpose(aaa,axes=(1,0,2))
。我建议将问题重命名为Numpy数组[35][5 3 5]
或…到5倍[3 5]
使其对其他人更有用。显然,对于每个第一次查看多维数据的人来说,转置
这个词并不明显,所以这就是保留这个问题的价值所在。否则,我确信这将与其他现有的转置
问题重复。@roadrunner66,我使用?,since它可以是任何东西。你认为将它改为5对其他人更好吗?谢谢!是的,我不确定,我只是想找出其他有类似问题的人(不知道转置这个词)会找到你的问题。也许重新排列numpy数组的维度?我建议将这个问题重命名为numpy数组[3 5]至[5 3 5]
或…至5倍[3 5]
使其对其他人更有用。显然,对于每个第一次查看多维数据的人来说,转置
这个词并不明显,所以这就是保留这个问题的价值所在。否则,我确信这将与其他现有的转置
问题重复。@roadrunner66,我使用?,since它可以是任何东西。你认为将它改为5对其他人更好吗?谢谢!是的,我不确定,我只是想找出其他有类似问题的人(不知道转置这个词)会发现你的问题。也许重新排列numpy数组的维度
?