就目前情况而言,将切片强制转换
bn为C连续顺序的任何尝试都将创建一个副本。
如果您不想更改开始使用的形状(并且不需要
a以C顺序表示自身的形状),则一种可能的解决方案是以
aFortran顺序从数组开始:
>>> a = numpy.ones((1024, 1024, 5), order='f')
切片也随后是F连续的:
>>> bn = a[:, :, 0]>>> bn.flags C_ConTIGUOUS : False F_ConTIGUOUS : True OWNdata: False ...
这意味着片的转置
bn将在C秩序和换位并 没有 创建一个副本:
>>> bn.T.flags C_ConTIGUOUS : True F_ConTIGUOUS : False OWNdata: False ...
然后,您可以对切片进行哈希处理:
>>> hashlib.sha1(bn.T).hexdigest()'01dfa447dafe16b9a2972ce05c79410e6a96840e'
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)