Untuk mengubah kerangka data panda kepada tatasusunan NumPy, adalah disyorkan untuk menggunakan kaedah df.to_numpy(). Pendekatan ini lebih disukai daripada df.values atas beberapa sebab, seperti yang diperincikan di bawah.
Memanggil df.to_numpy() kaedah membolehkan pengekstrakan tatasusunan NumPy yang mendasari daripada bingkai data.
import numpy as np import pandas as pd index = [1, 2, 3, 4, 5, 6, 7] a = [np.nan, np.nan, np.nan, 0.1, 0.1, 0.1, 0.1] b = [0.2, np.nan, 0.2, 0.2, 0.2, np.nan, np.nan] c = [np.nan, 0.5, 0.5, np.nan, 0.5, 0.5, np.nan] df = pd.DataFrame({'A': a, 'B': b, 'C': c}, index=index) df = df.rename_axis('ID') arr = df.to_numpy() print(arr)
Output:
[[ nan 0.2 nan] [ nan nan 0.5] [ nan 0.2 0.5] [ 0.1 0.2 nan] [ 0.1 0.2 0.5] [ 0.1 nan 0.5] [ 0.1 nan nan]]
Jika tujuannya adalah untuk mengekalkan jenis data dalam hasil Tatasusunan NumPy, pendekatan yang mungkin melibatkan penggunaan DataFrame.to_records(), seperti yang ditunjukkan di bawah:
records_array = df.to_records() print(records_array)
Output:
rec.array([('a', 1, 4, 7), ('b', 2, 5, 8), ('c', 3, 6, 9)], dtype=[('ID', '<U1'), ('A', '<i8'), ('B', '<i8'), ('C', '<i8')])
Sebagai alternatif, seseorang boleh menggunakan np.rec.fromrecords:
v = df.reset_index() records_array = np.rec.fromrecords(v, names=v.columns.tolist()) print(records_array)
Output:
rec.array([('a', 1, 4, 7), ('b', 2, 5, 8), ('c', 3, 6, 9)], dtype=[('index', '<U1'), ('A', '<i8'), ('B', '<i8'), ('C', '<i8')])
Menggunakan salah satu kaedah ini memastikan pengekalan jenis data dalam NumPy tatasusunan.
Atas ialah kandungan terperinci Bagaimana dengan Cekap Menukar Pandas DataFrame kepada NumPy Array?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!