Por que as saídas nos dois casos são diferentes? Sou novo nesta biblioteca
Caso 1
import numpy as np
np.random.seed(2)
array = np.random.random((3,1))
print('Printing array : \n', array)
print('printing array - 1 : \n',array-1)
Output :
Printing array :
[[0.4359949 ]
[0.02592623]
[0.54966248]]
printing array - 1 :
[[-0.5640051 ]
[-0.97407377]
[-0.45033752]]
Isso está ok, pois 1 é subtraído de cada elemento
Caso 2
print('Printing array : \n', np.random.random ((3,1))-1)
Saída:
Printing array :
[[-0.56467761]
[-0.5796322 ]
[-0.66966518]]
Por que as duas saídas são diferentes? np.random.random ((3,1)
) deve ser o mesmo em ambos os casos (mesma semente) e, portanto, subtrair 1 deve produzir a mesma saída. O que estou estragando?
Executei o código como esperado, pois esperava a mesma saída em ambos os casos
No seu caso dois, você está chamando
np.random.random
novamente - mesmo que tenha começado com a mesma semente, o estado interno mudará cada vez que você chamarrandom
.Para demonstrar isso, livre-se completamente da subtração e imprima apenas os resultados de duas chamadas:
O código acima ainda usa uma variável para torná-lo mais parecido com seu primeiro código, mas você também pode escrever:
O motivo pelo qual você obteve matrizes diferentes foi explicado detalhadamente por @Jon Skeet .
Uma solução alternativa é personalizar uma função empacotando a semente aleatória junto com a função do gerador de números aleatórios, por exemplo,
e você verá