假设我们有一个 numpy 数组。
a = np.array([[1,2,3],[4,5,6], [7,8,9]])
Run Code Online (Sandbox Code Playgroud)
现在,如果我想提取第 0 列和第 2 列,则需要执行类似的操作
b = a[:, [0, 2]]
Run Code Online (Sandbox Code Playgroud)
然而,如果我们尝试通过执行来查找 b 的属性b.flags,我们会得到
C_CONTIGUOUS : False
F_CONTIGUOUS : True
Run Code Online (Sandbox Code Playgroud)
可以看到,原本是C_contigious的数组a自动转换为F_contigulous。如果我在单核上运行代码,这通常不会造成任何问题。但是,如果我使用 mpi4py 将数据分散到多个核心,则它必须仅是 C_contigious,否则分散是不正确的。
我的问题是如何避免“b”自动转换为 F_contigious?
谢谢,
SLB