Preciso trabalhar com arrays que podem ter zeros em suas formas. No entanto, estou encontrando um problema. Aqui está um exemplo:
import numpy as np
arr = np.array([[]])
assert arr.shape == (1,0)
arr.reshape((1,0)) # No problem (nothing changes)
arr.reshape((-1,0)) # ValueError: cannot reshape array of size 0 into shape (0)
Eu sempre pensei que -1
para uma operação de remodelação significa o produto de todas as dimensões restantes, ou seja, 1 neste caso. Isso é um bug ou não estou entendendo como isso deveria funcionar?
Se você ler a documentação:
Como diz furas , ele não pode calcular automaticamente a dimensão restante devido à divisão indefinida por 0. Qualquer número vezes 0 é 0.
Pode-se argumentar que a mensagem de erro gerada pelo NumPy não é das mais claras e está factualmente errada:
Então você pode realmente "remodelar array de tamanho 0 para o formato (0)". E deveria dizer algo como "remodelagem indefinida solicitada" em vez disso...
Então não é um "bug", mas definitivamente uma verruga, IMO. Pode valer a pena reportar se você quiser :)