Matplotlib ve numpy kullanımında anlayamadığım bir satır var

import numpy as np
import matplotlib.pyplot as plt

lin_data = np.genfromtxt("/..../simulations/static_tov_small_short/hydrobase-rho.maximum.asc")

plt.plot(lin_data[:,1],lin_data[:,2])

plt.show()



# plt.plot(lin_data[:,1],lin_data[:,2])

Yukarıdaki satırda kullanılan virgül işaretinin anlamı tam olarak nedir?

Bu “.asc” dosyasının içeriğinin bir kısmını aşağıda veriyorum. Özetle numpy ve matplotlib kullanarak aşağıdaki verileri okutup çizim yaptırıyorum.
lin_data olarak belirttiğim değişkene nasıl bir dilimleme yöntemi uygulanmış. Anlayamadığım kısmı burası. Yani karakter dilimleme yaparken virgül işareti kullanmıyorduk diye biliyorum.

ek bilgi: Bu veriler bir yıldızın evrimine ait modellemelerden türetilmiştir… Cactuscode (cactuscode.org) ile ürettim.

"""
# Scalar ASCII output created by CarpetIOScalar
# created on orion-PC by orion on Dec 11 2017 at 01:59:20+0300
# parameter filename: "/home/orion/simulations/static_tov/output-0000/static_tov_small_short.par"
# Build ID: build-sim-orion-PC-orion-2017.12.10-21.57.58-7701
# Simulation ID: run-static_tov_small_short-orion-PC-orion-2017.12.10-22.59.18-4374
# Run ID: run-static_tov_small_short-orion-PC-orion-2017.12.10-22.59.18-4374
#
# HYDROBASE::rho (hydrobase-rho)
# 1:iteration 2:time 3:data
# data columns: 3:rho
0 0 0.00127999999244924
32 0.1875 0.00127917378768782
64 0.375 0.00127833800372278
96 0.5625 0.0012774975824997
128 0.75 0.00127665291435107
160 0.9375 0.00127579770037419
"""

Merhaba.

Sanırım bu Python’daki demet(tuple) veri tipine denk gelen bir kullanım. Doğrudan 1 yazılsa bu bir sayı olarak algılanacaktı ancak ,1 yazınca bir öğeye sahip bir demet(tuple) olarak algılanması sağlanmış. Bunu nereden anladın dersen, şöyle bir deneme-yanılma yaptım:

>>> a = [1, 2, 3]
>>> a[:,1]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: list indices must be integers or slices, not tuple

Python burada ,1'in liste dizinleri için tam sayı ya da dilim(slice) olması gerektiğini, demet olamayacağını söylüyor. Demek ki yazdığımız ,1 bir demet olarak algılanıyor. Liste dizinleri bunu kabul etmese de başka veri tipleri için işleç aşırı yükleme(operator overloading) ile bunu sağlayabiliriz. İşin garibi bunu tek başına yazdığımızda hata alıyoruz:

>>> ,1
  File "<stdin>", line 1
    ,1
    ^
SyntaxError: invalid syntax

Şöyle yazarsak sorun yok:

>>> 1,
(1,)

İyi çalışmalar.