如何将Pandas DataFrame转换为NumPy数组?如何从含IBM股票价格的Pandas DataFrame中提取收盘价列生成NumPy数组?
嘿,这两个问题都是Pandas和NumPy交互里的常见需求,我来给你一步步讲清楚!
问题1:如何将Pandas DataFrame转换为NumPy数组?
有几种简单可靠的方法,推荐优先用官方指定的方式:
- 使用
DataFrame.to_numpy()(官方推荐):这是最清晰、最符合现代Pandas用法的方法,还能按需指定数据类型:import pandas as pd import numpy as np # 示例DataFrame df = pd.DataFrame({'col1': [10, 20, 30], 'col2': [40, 50, 60]}) # 转换为NumPy数组,可选指定数据类型 numpy_array = df.to_numpy(dtype=np.float64) - 使用
numpy.asarray():直接传入整个DataFrame,就能把所有列转换成数组:numpy_array = np.asarray(df) - 旧版
.values属性:这个方法现在也能用,但to_numpy()的语义更明确,更推荐前者:numpy_array = df.values
问题2:提取收盘价列转换为NumPy数组
你说的没错,直接用np.asarray(df)会把所有列都包含进来,解决办法很简单——先选中close列,再转换,具体有几种方式:
- 方式1:选中列后用
to_numpy():
这里# 假设你的股票数据DataFrame名为 ibm_stock_df close_array = ibm_stock_df['close'].to_numpy()ibm_stock_df['close']返回的是一个Pandas Series,转成数组后就是一维的收盘价数组。 - 方式2:用
np.asarray()直接处理选中的列:close_array = np.asarray(ibm_stock_df['close']) - 如果需要二维数组(保留列维度):用双括号选中列(返回的是DataFrame),再转换:
这样得到的数组形状会是close_array_2d = ibm_stock_df[['close']].to_numpy()(行数, 1),而不是一维的(行数,)。
内容的提问来源于stack exchange,提问作者RedBirdHasFlown
相关产品推荐
相关产品推荐

