web-dev-qa-db-fra.com

AttributeError: le module 'numpy' n'a pas d'attribut 'flip'

 enter image description here

Message d'erreur: AttributeError: le module 'numpy' n'a pas d'attribut 'flip'

Je ne comprends pas pourquoi cela me donne cette erreur, j'ai googlé et me suis assuré d'être à la dernière version de numpy. Je n'ai définitivement pas d'autre fichier appelé numpy dans mon répertoire de travail. Toute aide serait grandement appréciée!

5
user428487

np.flip a été introduit pour les versions v.1.12.0 et ultérieures. Pour les anciennes versions, vous pouvez utiliser np.fliplr et np.flipud .

Sinon, mettez à niveau votre version numpy en utilisant pip install --user --upgrade numpy.

10
coldspeed

Oui, flip est nouveau, mais cela n’a rien de magique. Voici le code:

def flip(m, axis):
    if not hasattr(m, 'ndim'):
        m = asarray(m)
    indexer = [slice(None)] * m.ndim
    try:
        indexer[axis] = slice(None, None, -1)
    except IndexError:
        raise ValueError("axis=%i is invalid for the %i-dimensional input array"
                         % (axis, m.ndim))
    return m[Tuple(indexer)]

L'essence de l'action consiste à indexer votre tableau avec une ou plusieurs instances de ::-1 (la slice(None,None,-1)). flipud/lr faire la même chose.

Avec cette x, flip fait:

In [826]: np.array([1,2,3])[::-1]
Out[826]: array([3, 2, 1])
4
hpaulj

On peut refaçonner un tableau 1-D, appliquer fliplr puis récupérer un tableau 1-D Il est possible de passer de 1-D x à 2-D en utilisant, par exemple, x.reshape(1,x.size) ou [x].

x = np.arange(5)
print(x)
x = np.fliplr([x])[0];  # fliplr works with at least 2-D arrays
print(x)

[0 1 2 3 4]
[4 3 2 1 0]

0
Yola