【发布时间】:2021-07-13 22:12:51
【问题描述】:
我得到了主题 IndexError,但我不知道为什么,因为我检查了所涉及数组的 形状 并且它们匹配。
首先,在我的代码中,我创建了一个转置处理的数组,以便获得 year_rec、event 和 value。生成 369563 行和 3 列的数组。
maxevent_arr = np.array([year_rec, event, value])
maxevent_arr = maxevent_arr.transpose()
print("maxevent_arr[1590:1595]= \n", maxevent_arr[1590:1595])
print("shape(maxevent_arr)= ", maxevent_arr.shape)
产生:
maxevent_arr[1590:1595]=
[[1.964e+03 3.000e+01 5.000e-01]
[1.964e+03 3.000e+01 3.000e+00]
[1.964e+03 3.000e+01 4.500e+00]
[1.964e+03 3.000e+01 7.500e+00]
[1.964e+03 3.000e+01 8.800e+00]]
shape(maxevent_arr)= (369563, 3)
然后我创建了一个名为 mask_yr 的掩码,它用 1964 年标识这些索引。后来我将这个掩码重新调整为相同数量的元素和 1 列,正如人们所期望的那样。我这样做是因为没有这一步,我的形状是 (369563,),即没有可识别的列..
mask_yr = maxevent_arr[:, 0] == 1964
mask_yr = np.reshape(mask_yr, (maxevent_arr.shape[0], 1))
print('mask_yr[:5]: \n', mask_yr[:5])
print("shape(mask_yr) = ", mask_yr.shape)
产生:
mask_yr[:5]:
[[ True]
[ True]
[ True]
[ True]
[ True]]
shape(mask_yr) = (369563, 1) # this looks ok.
最后,我对所有列应用相同的掩码以获取每一行的相应值。
mask_rain = maxevent_arr[:, mask_yr]
print('mask_rain[1590:1595]: \n', mask_rain[1590:1595])
这是我得到 IndexError 的地方:
Traceback (most recent call last):
File "C:\1_Earthfx\Python\hourly_rain\rain_analysis.py", line 150, in <module>
mask_rain = maxevent_arr[:, mask_yr]
IndexError: too many indices for array
知道这是关于什么的吗? maxevent_arr 的维度 0 与 mask_yr....
中的维度相匹配【问题讨论】:
-
您在哪里拥有
maxevent_arr[:, mask_yr],用您自己的话说:您希望maxevent_arr拥有多少维度?当您使用[:, x]索引具有这么多维度的数组时,其中x是掩码,您认为x应该有多少维度? (为什么?)现在,mask_yr有多少个维度?