Já existe uma lista abrangente de dicas para python aqui , então o que eu estou pedindo são dicas que se aplicam especificamente a usar os numpy
, scipy
ou pylab
bibliotecas.
Podem ser maneiras de reduzir o código que já está sendo usado numpy
ou maneiras de reduzir operações comuns em python usando essas bibliotecas.
Uma dica por resposta, por favor.
pylab
é apenasmatplotlib.pyplot
+numpy
em um espaço para nome comum descontinuado. Anumpy
parte depylab
é trivial no sentido de que suas importações têm o mesmo número de bytes; portanto, somente material de plotagem pode vir adicionalmentepylab
, mas suspeito que não é isso que você tinha em mente com sua pergunta.numpy
pacotes. Por exemplo,pylab.randint
é válido onde numpy exigirianumpy.random.randint
. Portanto, para o golfepylab
deve fornecer um código mais curto.Respostas:
Faça uso da transmissão do Numpy
Difusão significa replicar uma matriz multidimensional ao longo de algumas de suas dimensões singleton para corresponder ao tamanho de outra matriz. Isso acontece automaticamente para matrizes Numpy quando operadores aritméticos são aplicados a eles.
Por exemplo, para gerar uma tabela de multiplicação 10 × 10, você pode usar
Experimente online!
Aqui
t
é criado como o array Numpy[1, 2, ..., 10]
. Isso tem forma (10), que é equivalente a (1,10). A outra matriz de operandos,,t[:,None]
tem tamanho (10,1). A multiplicação das duas matrizes as replica implicitamente, para que elas se comportem como se tivessem forma (10,10). O resultado, que também possui formato (10,10), contém os produtos para todos os pares de entradas nas matrizes originais.fonte
zip
transmissão, isso vai aparecer na sua própria resposta?[*zip(t)]
tem a mesma contagem de bytes que a mais legívelt[:,None]
. Mas você está certo, pode ser interessante notar, então eu adicionei-lo de volta aqui[*zip(t)]
seria dois bytes mais curto se houvesse mais dimensões.[*zip(t)]
só irá funcionar em python 3.my \t = 1..10; .fmt('%3d').put for t «*» t[*,Empty]
ou você poderia usarzip(t)
Use r _ [...] em vez de intervalo (...)
Numpy fornece matlab como sintaxe para criação de array usando
r_[...]
. Qualquer notação de fatia entre parênteses é interpretada como uma matriz com o intervalo indicado. Então, por exemploé equivalente a
e para a maioria dos usos pode substituir
Ele também pode lidar com expressões mais complexas. Por exemplo, para obter índices de 0 a 10 e voltar novamente,
fonte