wake-up-neo.com

Wie erstelle ich ein Array, dessen Elemente alle einem angegebenen Wert entsprechen?

Wie erstelle ich ein Array, bei dem jeder Eintrag den gleichen Wert hat? Ich weiß, dass numpy.ones() und numpy.zeros() dies für Einsen und Nullen tun, aber was ist mit -1

Zum Beispiel:

>>import numpy as np
>>np.zeros((3,3))
array([[ 1.,  1.,  1.],
       [ 1.,  1.,  1.],
       [ 1.,  1.,  1.]])

>>np.ones((2,5))
array([[ 1.,  1.,  1.,  1.,  1.],
       [ 1.,  1.,  1.,  1.,  1.]])

>>np.negative_ones((2,5))
???
16
maxm

Ich weiß nicht, ob es einen Nice-Einzeiler ohne arithmetische Operation gibt, aber der schnellste Ansatz besteht darin, ein nicht initialisiertes Array mit empty zu erstellen und dann mit .fill() die Werte festzulegen. Zum Vergleich:

>>> timeit m = np.zeros((3,3)); m += -1
100000 loops, best of 3: 6.9 us per loop
>>> timeit m = np.ones((3,3)); m *= -1
100000 loops, best of 3: 9.49 us per loop
>>> timeit m = np.zeros((3,3)); m.fill(-1)
100000 loops, best of 3: 2.31 us per loop
>>> timeit m = np.empty((3,3)); m[:] = -1
100000 loops, best of 3: 3.18 us per loop

>>> timeit m = np.empty((3,3)); m.fill(-1)
100000 loops, best of 3: 2.09 us per loop

um ehrlich zu sein, neige ich dazu, entweder die Nullmatrix hinzuzufügen oder stattdessen die Einsenmatrix zu multiplizieren, da die Initialisierung selten ein Engpass ist.

16
DSM

Verwenden Sie np.full() wie folgt:

np.full((2, 5), -1.)

Kehrt zurück:

array([[-1., -1., -1., -1., -1.],
       [-1., -1., -1., -1., -1.]])
9

-1 * np.one ((2,5))

Multiplizieren mit der Zahl, die Sie in der Matrix benötigen, ist der Trick.

In [5]: -1 * np.ones((2,5))
Out[5]: 
array([[-1., -1., -1., -1., -1.],
       [-1., -1., -1., -1., -1.]])

In [6]: 5 * np.ones((2,5))                                                                                                                                                                                                                  
Out[6]:                                                                                                                                                                                                                                      
array([[ 5.,  5.,  5.,  5.,  5.],                                                                                                                                                                                                            
       [ 5.,  5.,  5.,  5.,  5.]]) 
7
Manish Mulani

Für ein Array von -1s

-1 * np.ones((2,5))

Einfach mit der Konstanten multiplizieren.

3
asheeshr
foo = np.repeat(10, 50).reshape((5,10))

Erstellt eine 5x10-Matrix von 10s.

Wie wäre es mit:

[[-1]*n]*m

wo ist n die Anzahl der Spalten und m ist die Anzahl der Zeilen?

0
learning