x 배열에서 numpy.astype을 사용하면 어떻게 과학 표기법을 원래 형식으로 변환 할 수 있습니까? 여기에 내 코드입니다 :문자열의 2 차원 배열을 python_removing 과학 표기법으로 변환하십시오.
#find row number of max value in column 1: (This piece works fine)
max_index = where(reader_array[:,1] == max(reader_array[:,1]))
#take last element in column 5: (This one is also fine)
total_ = (reader_array[(len(reader_array[:,5])-1),5])
#find row number where element in column 5 is equal to 0.1*total_: (here's the problem!)
0.1_index = where((reader_array[:,5]) == (total_)*0.1)
:
with open ('outfile.csv', 'r') as infile:
reader = csv.reader(infile)
reader_list = list(reader)
reader_array = array(reader_list)
x = reader_array[:,5].astype(np.float)
#original array:
print reader_array[:,5]
#converted to float
print x
#original array:
['-0.00041955436132607246' '-0.00036612800229292086' '0.00022313364860991641' ..., '73.418371245304215' '73.417384428365267' '73.416718169781149']
#converted to float
[ -4.19554361e-04 -3.66128002e-04 2.23133649e-04 ..., 7.34183712e+01 7.34173844e+01 7.34167182e+01]
더 구체적으로, 나는 수레에 문자열의 배열을 변환하지만, 원래의 배열과 같은 형식을 유지하고, 몇 가지 분석을 수행 할 그래서 문자열을 수레로 바꾸면 원래 배열과 같은 형식으로 배열 구성원을 다른 float (0.1)로 곱할 수 있습니다.
값 (0.1 * total_)은 해결 방법을 생각해야하는 열 5의 행 값과 일치하지 않을 수 있습니다. 그러나 행을 (0.1 * total_)과 비교할 수 없으면 진행할 수 없습니다.
누군가가 접근 방법에 대한 힌트를 줄 수 있으면 고맙습니다.
이것은 인쇄상의 문제입니다. 귀하의 질문에 대한 대답은 다음과 같습니다 : [과학 표기법 대신 일반적인 방법으로 ndarray 프로그램을 강제 실행하는 방법] (http://stackoverflow.com/q/4205259/832621) –
Numpy float64의 유효 자릿수는 유효 자릿수가 15 자리이며 유효 자릿수가 17 자이기 때문에 충분하지 않습니다. [Decimal] (http://docs.python.org/3.3/library/decimal.html) 또는 [SymPy] (http://sympy.org/en/index.html) –
을 사용할 수 있습니다. 중복, OP는 유형 차이와 같은 문제가 있습니다. 질문은 그 자체로 인쇄하는 것과 아무런 관련이 없습니다. (그런 소리 일지라도, 인쇄 문제는 단지 오해의 징후 일뿐입니다.) –