[英]Numpy array [? 5 5] to five arrays with [? 5]
我有一個 [? 5 5]數組:(在這種情況下為?= 3)
[[[ 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]]]
我想有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, 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
。 您可以選擇3D結構軸中的任何序列。
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.swapaxes
是另一種替代np.transpose
當只有一對軸的參與。
a, b, c, d, e = arr.swapaxes(0, 1) # swap axes 0, 1
swapaxes
將總是返回陣列的視圖 ,其中相同的結果np.transpose
通過@ roadrunner66提出。 通常它比transpose
要快得多,並且在numpy
的代碼中大量使用以numpy
放置重要的維度。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.