Saya pemula di python dan saya memuat data besar dari csv ke dalam kerangka data pandas. Namun, saya tidak dapat menemukan metode untuk membuat larik 2d untuk setiap baris kerangka data di mana setiap baris larik np baru sesuai dengan rentang nilai X. Misalnya, dalam kode saya:

import pandas as pd
import numpy as np

data = pd.read_csv("categorization/dataAll10Overfit.csv",header=None)
#print(data)
rec = data.iloc[:,0:3968] # outputs i rows x 3969 columns

Ada 3968 nilai di setiap baris kerangka data dan saya ingin membuat array numpy 124x32 sehingga setiap blok 124 nilai menjadi baris dalam array 2d np. Saya tahu C # dan di sana akan berfungsi untuk mengisi array baru menggunakan for loop tapi saya kira harus ada fungsi satu baris dalam python untuk membagi semua data panah kerangka data menjadi array np baru. Jika pertanyaan ini digandakan, silakan merujuk saya ke posting lain. Terima kasih sebelumnya

2
Pablo Gonzalez 15 Agustus 2017, 12:11

2 jawaban

Jawaban Terbaik

Jika Anda ingin semua array 2D dalam satu array 3D, Anda dapat melakukan:

arr = np.zeros((data.shape[0], 124, 32))

for idx, row in data.iterrows():
    arr[idx] = np.asarray(row).reshape(124, 32)

Atau sebagai daftar array satu baris:

arr = [np.asarray(row).reshape(124, 32) for idx, row in data.iterrows()]
1
Nyps 15 Agustus 2017, 11:58

Saya berasumsi Anda tidak ingin mengganti array di tempatnya.

nested_record =  pd.DataFrame(columns=['record'], index=range(3968))

for i in range(3968):
    nested_record['records'].iloc[i] = data.iloc[i].reshape(124, 32)
1
Oluwafemi Sule 15 Agustus 2017, 11:48