Tôi đang viết một phương thức để tạo một mảng từ tệp dữ liệu. Phương pháp này trông giống như:Loại bỏ dtype ở cuối mảng numpy
import numpy
def readDataFile(fileName):
try:
with open(fileName, 'r') as inputs:
data = None
for line in inputs:
line = line.strip()
items = line.split('\t')
if data == None:
data = numpy.array(items[0:len(items)])
else:
data = numpy.vstack((data, items[0:len(items)]))
return numpy.array(data)
except IOError as ioerr:
print 'IOError: ', ioerr
return None
tập tin dữ liệu của tôi chứa dòng số, mỗi trong số đó được tách ra khỏi nhau bởi một tab, ví dụ:
1 2 3
4 5 6
7 8 9
Và tôi hy vọng sẽ nhận được một mảng như sau :
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
Tuy nhiên, kết quả chứa dtype
ở phần cuối của nó:
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]], dtype='|S9')
Do đó, tôi không thể thực hiện một số thao tác trên kết quả, ví dụ: nếu tôi cố gắng để tìm giá trị tối đa cho mỗi dòng sử dụng result.max(0)
, tôi sẽ nhận được một lỗi:
TypeError: cannot perform reduce with flexible type.
Vì vậy, bất cứ ai có thể cho tôi biết những gì sai với mã của tôi và làm thế nào để sửa chữa nó? Cảm ơn rất nhiều.
Cảm ơn, mã của bạn hoạt động thực sự tốt. Nhưng bạn có thể làm rõ tại sao nó là một ý tưởng tồi để đưa numpy.vstack bên trong một vòng lặp? Chúc mừng. –