web-dev-qa-db-fra.com

Python Tranche de tableau avec virgule?

Je me demandais à quoi servait la virgule lors du découpage Python - j'ai un exemple qui semble fonctionner, mais la ligne qui me semble bizarre est

p = 20*numpy.log10(numpy.abs(numpy.fft.rfft(data[:2048, 0])))

Maintenant, je sais que lors du découpage d'un tableau, le premier nombre est le début, le suivant est la fin et le dernier est l'étape, mais que désigne la virgule après le numéro de fin? Merci.

39
SolarLune

Il est utilisé pour extraire une colonne spécifique d'un tableau 2D. Reportez-vous aux premiers exemples ici .

Votre exemple extraira donc la colonne 0 (la première colonne) des 2048 premières lignes (0 à 2047). Notez cependant que cette syntaxe ne fonctionnera que pour les tableaux numpy et non pour les listes générales python.

33
Abhranil Das

Empiriquement - créer un tableau à l'aide de numpy

m = np.fromfunction(lambda i, j: (i +1)* 10 + j + 1, (9, 4), dtype=int)

qui assigne un tableau comme ci-dessous à m

array(
      [[11, 12, 13, 14],
       [21, 22, 23, 24],
       [31, 32, 33, 34],
       [41, 42, 43, 44],
       [51, 52, 53, 54],
       [61, 62, 63, 64],
       [71, 72, 73, 74],
       [81, 82, 83, 84],
       [91, 92, 93, 94]])

Maintenant pour la tranche

m[:,0]

nous donnant

array([11, 21, 31, 41, 51, 61, 71, 81, 91])

J'ai peut-être mal interprété Khan Academy (alors prenez avec du grain de sel):

En termes d'algèbre linéaire, m[:,n] prend le vecteur de colonne nth de la matrice m

Voir la note d'Abhranil comment cette interprétation spécifique ne s'applique qu'à numpy

17
fiat

Il tranche avec un tuple. La signification exacte du tuple dépend de l'objet à découper. Dans les tableaux NumPy, il effectue une tranche à m dimensions sur un tableau à n dimensions.

>>> class C(object):
...   def __getitem__(self, val):
...     print val
... 
>>> c = C()
>>> c[1:2,3:4]
(slice(1, 2, None), slice(3, 4, None))
>>> c[5:6,7]
(slice(5, 6, None), 7)
13