Я пытался создать своего рода 2d-фильтр с numpy, и я нашел что-то похожее на ошибку.
В приведенном ниже примере я пытаюсь настроить таргетинг на 2-й и 4-й столбцы первой, второй и последней строк моих данных, например:
[[ 2 4]
[ 8 10]
[26 28]]
Я знаю, что вторая-последняя строка возвращает это, но я не смог бы ничего там назначить (он возвращает копию). И это все еще не объясняет, почему последний провалился.
import numpy as np
# create my data: 5x6 array
data = np.arange(0,30).reshape(5,6)
# mask: only keep row 1,2,and 5
mask = np.array([1,1,0,0,1])
mask = mask.astype(bool)
# this is fine
print 'data\n', data, '\n'
# this is good
print 'mask\n', mask, '\n'
# this is nice
print 'data[mask]\n', data[mask], '\n'
# this is great
print 'data[mask, 2]\n', data[mask, 2], '\n'
# this is awesome
print 'data[mask][:,[2,4]]\n', data[mask][:,[2,4]], '\n'
# this fails ??
print 'data[mask, [2,4]]\n', data[mask, [2,4]], '\n'
выход:
data
[[ 0 1 2 3 4 5]
[ 6 7 8 9 10 11]
[12 13 14 15 16 17]
[18 19 20 21 22 23]
[24 25 26 27 28 29]]
mask
[ True True False False True]
data[mask]
[[ 0 1 2 3 4 5]
[ 6 7 8 9 10 11]
[24 25 26 27 28 29]]
data[mask, 2]
[ 2 8 26]
data[mask][:,[2,4]]
[[ 2 4]
[ 8 10]
[26 28]]
data[mask, [2,4]]
Traceback (most recent call last):
[...]
IndexError: shape mismatch: indexing arrays could not be broadcast together with shapes (3,) (2,)
Я публикую это здесь, потому что я недостаточно уверен в своих умелых навыках, чтобы быть уверенным, что это ошибка, и подать отчет об ошибке ...
Спасибо за вашу помощь / обратную связь!