Giả sử tôi có vector NumPy sauTrích xuất và chuyển dữ liệu trong NumPy
[[1, 3., 'John Doe', 'male', 'doc', '25'],
...,
[9, 6., 'Jane Doe', 'female', 'p', '28']]
tôi cần phải giải nén dữ liệu liên quan đến nhiệm vụ của tôi.
Là một người mới trong NumPy và trăn nói chung, tôi sẽ làm điều đó theo cách sau đây:
data = np.array(
[[1, 3., 'John Doe', 'male', 'doc', 25],
[9, 6., 'Jane Doe', 'female', 'p', 28]]
)
data_tr = np.zeros((data.shape[0], 3))
for i in range(0, data.shape[0]):
data_tr[i][0] = data[i, 1]
data_tr[i][1] = 0 if data[i, 3] == 'male' else 1
data_tr[i][2] = data[i, 5]
Và kết quả là tôi đã điều sau đây:
[[ 3., 0., 25.],
[ 6., 1., 28.]]
Những gì tôi muốn để biết là nếu có một cách hiệu quả hơn hoặc sạch hơn để thực hiện điều đó.
Ai đó có thể giúp tôi với điều đó không?
Một vài ý kiến - Một 'np.array' là một đối tượng tiếp giáp, điều này có nghĩa là mọi phần tử phải là cùng một loại vì vậy kết quả của 'dữ liệu' đã là một danh sách các chuỗi vì bạn không thể marshall các 'nam' và các chuỗi khác để một loại numerica. Tốt hơn để sử dụng Danh sách. – Chinny84
Xem 'dữ liệu'. Đó là một chuỗi (2,6) của chuỗi, không phải là số và chuỗi hỗn hợp. 'data_tr' mặt khác là mặc định' float' dtype. Khi gán từ 'data' vào' data_tr' 'numpy' sẽ cố gắng chuyển chuỗi thành float. Trong trường hợp này nó hoạt động. Nhưng nếu bạn nhận được các cột sai nó có thể đưa ra một lỗi. – hpaulj