web-dev-qa-db-fra.com

Comment créer un tableau dont les éléments sont tous égaux à une valeur spécifiée?

Comment créer un tableau où chaque entrée a la même valeur? Je sais que numpy.ones() et numpy.zeros() le font pour les 1 et les 0, mais qu'en est-il de -1

Par exemple:

>>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

Je ne sais pas s'il existe un one-liner de Nice sans opération arithmétique, mais l'approche la plus rapide consiste probablement à créer un tableau non initialisé en utilisant empty, puis à utiliser .fill() pour définir les valeurs. En comparaison:

>>> 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

mais pour être honnête, j’ai tendance à ajouter à la matrice zéro ou à la multiplier à la place, car l’initialisation est rarement un goulot d’étranglement.

16
DSM

Utilisez np.full() comme suit:

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

Résultats:

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

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

Multiplier par le nombre dont vous avez besoin dans la matrice fera l'affaire.

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

Pour un tableau de -1

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

Il suffit de multiplier avec la constante.

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

Va créer une matrice 5x10 de 10.

2

Que diriez-vous:

[[-1]*n]*m

où n est le nombre de colonnes et m le nombre de lignes?

0
learning