Комбинации np.transpose () и np.reshape () дают разные результаты в чистом виде и в numba - PullRequest
0 голосов
/ 03 декабря 2018

Следующий код производит различные выходные данные:

import numpy as np

from numba import njit


@njit
def resh_numba(a):
    res = a.transpose(1, 0, 2)
    res = res.copy().reshape(2, 6)
    return res

x = np.arange(12).reshape(2, 2, 3)

print("numpy")
x_numpy = x.transpose(1, 0, 2).reshape(2, 6)
print(x_numpy)

print("numba:")
x_numba = resh_numba(x)
print(x_numba)

Выход:

numpy
[[ 0  1  2  6  7  8]
 [ 3  4  5  9 10 11]]
numba:
[[ 0  4  8  2  6 10]
 [ 1  5  9  3  7 11]]

В чем причина этого?Я подозреваю, что где-то order='C' против order='F' происходит, но я ожидал, что и numpy, и numba везде будут использовать order='C' по умолчанию.

1 Ответ

0 голосов
/ 03 декабря 2018

Это ошибка из-за (по крайней мере) реализации np.ndarray.copy, я открыл здесь проблему: https://github.com/numba/numba/issues/3557

...