用python做科技计算时,经常需要类型转换,以下是常用类型转换
1、如果ndarray是二维数组,如下
array([[1],
[2],
[3]])
需要通过map结合lamdba
import numpy as np
import pandas as pd
data = np.array([1, 2, 3]).reshape(3, 1)
data_list = map(lambda x: x[0], data)
ser = pd.Series(data_list)
2、如果ndarray是一维数组,如下
array([1, 2, 3])
则通过data.tolist()即可
import numpy as np
import pandas as pd
data = np.array([1, 2, 3])
ser = pd.Series(data.tolist())
通过Series.values实现series转换为ndarray
import pandas as pd
data = [['2019/08/01', 10],
['2019/08/01', 11]]
result = pd.DataFrame(data, columns=['ds', 'val'])
result['val'].values
data2 = pd.Series([1, 2, 3])
data2.values
1、直接通过pd.DataFrame转换
import numpy as np
import pandas as pd
data = np.array([['2019/08/02', 'zhansan', 1], ['2019/08/03', 'lisi', 2], ['2019/08/04', 'wangwu', 3]])
df = pd.DataFrame(data)
打印df为
2、指定索引、数据、列名例子
import numpy as np
import pandas as pd
data = np.array([['', 'Col1', 'Col2'], ['Row1', 1, 2], ['Row2', 3, 4]])
df = pd.DataFrame(data=data[1:, 1:], # 从第2行开始并且第2列开始作为数据
index=data[1:, 0], # 第1列做索引,从第2行开始
columns=data[0, 1:]) # 第1行作为列名,从第2列开始
1、通过values方法,实现dataframe转换为ndarray
import pandas as pd
data = [['2019/08/01', 10],
['2019/08/01', 11]]
result = pd.DataFrame(data, columns=['ds', 'val'])
result.values
2、通过切片,实现某一行或者某一列转换为ndarray
import pandas as pd
data = [['2019/08/01', 10],
['2019/08/01', 11]]
result = pd.DataFrame(data, columns=['ds', 'val'])
rs = result.values
print(rs[:, 0])
print(rs[0, :])
rs[:, 0] 逗号前面表示:行都保留,逗号后面0表示保留第一列,结果为['2019/08/01' '2019/08/01']
rs[0, :]表示保留第一行,列都保留,结果为['2019/08/01' 10]