Numpy 数组维数问题
Numpy Array Dimension Issue
我有两个维度不同的数组。我想把后者(india_cases2)带到前者(baseline_diag),这样我就可以很容易地绘制它们。我无法绘制 india_cases.
india_daily_cases = pd.read_csv('India_Cases.csv')
india_daily_cases_subset = india_daily_cases.loc[india_daily_cases['t']> 33.,['Daily Confirmed']]
india_cases = india_daily_cases_subset.to_numpy()
india_cases2 = india_cases.T
baseline_diag 是函数的输出 - 不确定提供整个函数代码是否对此处有任何帮助。维度差异如下:
绘制图表的代码如下:
ax.plot(t, india_cases.T, 'r', alpha=0.5, lw=2, label='Actual Observed Cases')
ax.bar(t - 0.2, baseline_onsets, 0.4, label='New Onsets')
ax.bar(t + 0.2, baseline_cases, 0.4, label='New Cases')
我得到的错误如下:
ValueError: x and y must have same first dimension, but have shapes (47,) and (1, 47)
如何更改 india_cases2
的维度
我会用 numpy.ndarray.reshape
.
我不确定哪种形状更可取,但您可以通过 reshape(47)
、reshape((47,1))
或 reshape((1,47))
.
更改您想要的形状
您可以使用多种等效方法:
india_cases2.ravel()
np.squeeze(india_cases2)
india_cases2.reshape(-1)
甚至像
india_cases2.shape = (india_cases2.size,)
或者,您可以将 t
扩展为
t.reshape(1, -1)
通过添加所需的维度使用重塑:
baseline_onsets = baseline_onsets[None, :]
我没有看到 baseline_cases
形状,但您可能需要对该数组执行相同的操作。
india_daily_cases_subset = india_daily_cases.loc[india_daily_cases['t']> 33.,['Daily Confirmed']]
india_cases = india_daily_cases_subset.to_numpy()
india_cases2 = india_cases.T
india_daily_cases_subset
,使用此 loc
索引生成具有 1 列的 DataFrame。 india_cases
是一个 (n,1)
数组,转置后变为 (1,n)
.
india_daily_cases_subset = india_daily_cases.loc[india_daily_cases['t']> 33.,'Daily Confirmed']
如果列选择器周围没有 []
,结果将是 pandas.Series
。它的 to_numpy()
是一维数组 (n,)
形状。
换句话说,通过注意数据帧索引,您无需 squeeze/ravel
步骤即可获得所需的一维数组。
我有两个维度不同的数组。我想把后者(india_cases2)带到前者(baseline_diag),这样我就可以很容易地绘制它们。我无法绘制 india_cases.
india_daily_cases = pd.read_csv('India_Cases.csv')
india_daily_cases_subset = india_daily_cases.loc[india_daily_cases['t']> 33.,['Daily Confirmed']]
india_cases = india_daily_cases_subset.to_numpy()
india_cases2 = india_cases.T
baseline_diag 是函数的输出 - 不确定提供整个函数代码是否对此处有任何帮助。维度差异如下:
绘制图表的代码如下:
ax.plot(t, india_cases.T, 'r', alpha=0.5, lw=2, label='Actual Observed Cases')
ax.bar(t - 0.2, baseline_onsets, 0.4, label='New Onsets')
ax.bar(t + 0.2, baseline_cases, 0.4, label='New Cases')
我得到的错误如下:
ValueError: x and y must have same first dimension, but have shapes (47,) and (1, 47)
如何更改 india_cases2
的维度我会用 numpy.ndarray.reshape
.
我不确定哪种形状更可取,但您可以通过 reshape(47)
、reshape((47,1))
或 reshape((1,47))
.
您可以使用多种等效方法:
india_cases2.ravel()
np.squeeze(india_cases2)
india_cases2.reshape(-1)
甚至像
india_cases2.shape = (india_cases2.size,)
或者,您可以将 t
扩展为
t.reshape(1, -1)
通过添加所需的维度使用重塑:
baseline_onsets = baseline_onsets[None, :]
我没有看到 baseline_cases
形状,但您可能需要对该数组执行相同的操作。
india_daily_cases_subset = india_daily_cases.loc[india_daily_cases['t']> 33.,['Daily Confirmed']]
india_cases = india_daily_cases_subset.to_numpy()
india_cases2 = india_cases.T
india_daily_cases_subset
,使用此 loc
索引生成具有 1 列的 DataFrame。 india_cases
是一个 (n,1)
数组,转置后变为 (1,n)
.
india_daily_cases_subset = india_daily_cases.loc[india_daily_cases['t']> 33.,'Daily Confirmed']
如果列选择器周围没有 []
,结果将是 pandas.Series
。它的 to_numpy()
是一维数组 (n,)
形状。
换句话说,通过注意数据帧索引,您无需 squeeze/ravel
步骤即可获得所需的一维数组。