so habe ich ein Dataset mit dem Namen data_low die wie folgt aussieht:Wie können Werte eines dreidimensionalen Arrays gedruckt werden, die unter einem bestimmten Wert liegen?
(array([ 0, 0, 0, ..., 30, 30, 30]), array([ 2, 2, 5, ..., 199, 199, 199]), array([113, 114, 64, ..., 93, 94, 96]))
Und das ist seine Form: (84243,3).
Ich kann einen eindeutigen Wert für die Fällung aus dem Datensatz wie diese:
In [63]: print(data_low[0, 2, 113])
Out [63]: 1.74
Was ich die Werte in meinem Dataset alles drucken zu tun versuche, die einen Wert von weniger als 3,86667 hat. Ich bin ziemlich neu in Python, und weiß nicht wirklich, welche Schleife zu diesem Zweck verwendet werden soll. Hilfe wird sehr geschätzt. Vielen Dank.
EDIT: Hier ist das Programm, das ich derzeit habe. Für einen bestimmten Kontext habe ich ncecat verwendet, um 31 Datensätze zu kombinieren. Aus diesem Grund habe ich drei 1D-Arrays: Das erste Array ist der Tag, und das 2. und 3. stehen für den Längen- und Breitengrad.
data_path = r"C:\Users\matth\Downloads\TRMM_3B42RT\3B42RT_Daily.201001.7.nc4"
f = Dataset(data_path)
latbounds = [ -38 , -20 ]
lonbounds = [ 115 , 145 ] # degrees east ?
lats = f.variables['lat'][:]
lons = f.variables['lon'][:]
# latitude lower and upper index
latli = np.argmin(np.abs(lats - latbounds[0]))
latui = np.argmin(np.abs(lats - latbounds[1]))
# longitude lower and upper index
lonli = np.argmin(np.abs(lons - lonbounds[0]))
lonui = np.argmin(np.abs(lons - lonbounds[1]))
precip_subset = f.variables['precipitation'][ : , lonli:lonui , latli:latui ]
print(precip_subset.shape)
print(precip_subset.size)
print(np.mean(precip_subset))
data_low = np.nonzero((precip_subset > 0) & (precip_subset < 3.86667))
print(data_low)
x = list(zip(*data_low))[:]
xx = np.array(x)
print(xx.shape)
print(xx.size)
for i in range(0,84243,1):
print(data_low[i, i, i])
OUT:
In [136]: %run "C:\Users\matth\precip_anomalies.py"
(31, 120, 72)
267840
1.51398
(array([ 0, 0, 0, ..., 30, 30, 30]), array([ 7, 7, 7, ..., 119, 119,
119]), array([ 9, 10, 11, ..., 23, 53, 54]))
(13982, 3)
41946
[ 0 0 0 ..., 30 30 30]
TypeErrorTraceback (most recent call last)
C:\Users\matth\precip_anomalies.py in <module>()
53
54 for i in range(0,84243,1):
---> 55 print(data_low[i, i, i])
TypeError: tuple indices must be integers, not tuple
Dies sieht nicht wie ein Array mit der Form '84243x3' aus, sondern wie ein three_tuple mit drei 1d-Arrays. –
Wie möchten Sie sie drucken? Gerade in einer langen Liste, oder ihre Indizes, oder die restlichen Zellen irgendwie "ausgeblendet"? –
Ich benutzte die Liste (zip (* data_low)) [:] und erstellte sie dann in ein numpy Array. Danach fand ich die Größe und es war (84243, 3) –