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)).

更改您想要的形状

https://numpy.org/doc/stable/reference/generated/numpy.ndarray.reshape.html?highlight=reshape#numpy.ndarray.reshape

您可以使用多种等效方法:

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 步骤即可获得所需的一维数组。