将numpy数组转换为C连续顺序的最便宜方法?

将numpy数组转换为C连续顺序的最便宜方法?,第1张

将numpy数组转换为C连续顺序的最便宜方法?

就目前情况而言,将切片强制转换

bn
为C连续顺序的任何尝试都将创建一个副本。

如果您不想更改开始使用的形状(并且不需要

a
以C顺序表示自身的形状),则一种可能的解决方案是以
a
Fortran顺序从数组开始:

>>> 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'


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5649080.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存