【发布时间】:2015-01-03 04:00:36
【问题描述】:
我想将一个 4x4 数组划分为一个由四个 2x2 数组组成的列表。这个
| 0 1 2 3 |
| 4 5 6 7 |
| 8 9 10 11 |
|12 13 14 15 |
应该分成四块为
| |0 1| |2 3 | |
| |4 5| |6 7 | |
| |
| | 8 9| |10 11| |
| |12 13| |14 15| |
所以,如果我访问块 1,那么它应该是 [2,3],[6,7]。
我写了这个方法:
from numpy import *
from operator import itemgetter
def divide_in_blocks(A):
A1 = hsplit(A, A[0].size/2)
for i, x in enumerate(A1):
A1[i] = vsplit(x, x.size/4)
return A1
if __name__ == '__main__':
a = arange(16).reshape(4,4)
a1 = divide_in_blocks(a)
#print a
#a1 = sorted(a1, key=itemgetter(2))
print a1
将数组划分为
| |0 1| | 8 9 | |
| |4 5| |12 13 | |
| |
| |2 3| |10 11| |
| |6 7| |14 15| |
即我以 [8, 9], [12, 13] 的身份获得第 1 块。
代码输出:
[[array([[0, 1],
[4, 5]]),
array([[ 8, 9],
[12, 13]])],
[array([[2, 3],
[6, 7]]),
array([[10, 11],
[14, 15]])]]
有没有办法对这个数组列表进行排序以获得所需的输出:
[[array([[0, 1],
[4, 5]]),
array([[2, 3],
[6, 7]])],
[array([[ 8, 9],
[12, 13]]),
array([[10, 11],
[14, 15]])]]
?
【问题讨论】:
-
您可以转换为python普通列表并对主列表中的列表进行排序。
标签: python arrays list sorting numpy