2

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_)과 비교할 수 없으면 진행할 수 없습니다.

누군가가 접근 방법에 대한 힌트를 줄 수 있으면 고맙습니다.

+0

이것은 인쇄상의 문제입니다. 귀하의 질문에 대한 대답은 다음과 같습니다 : [과학 표기법 대신 일반적인 방법으로 ndarray 프로그램을 강제 실행하는 방법] (http://stackoverflow.com/q/4205259/832621) –

+1

Numpy float64의 유효 자릿수는 유효 자릿수가 15 자리이며 유효 자릿수가 17 자이기 때문에 충분하지 않습니다. [Decimal] (http://docs.python.org/3.3/library/decimal.html) 또는 [SymPy] (http://sympy.org/en/index.html) –

+2

을 사용할 수 있습니다. 중복, OP는 유형 차이와 같은 문제가 있습니다. 질문은 그 자체로 인쇄하는 것과 아무런 관련이 없습니다. (그런 소리 일지라도, 인쇄 문제는 단지 오해의 징후 일뿐입니다.) –

답변

1

부동 소수점 숫자가 IEEE 754을 사용하여 저장된다는 사실은 본질적으로 제한됩니다. 임의의 정밀도 부동 소수점을 사용할 수 없으므로, 문자열 표현과 반드시 ​​동일 할 필요는 없습니다.

그러나, 귀하의 경우, 더 중요한 문제는 문자열을 부동 소수점과 비교하려는 것이므로 물론 다를 것입니다. 파이썬은 동적이지만, strongly이 입력됩니다.

위의 두 가지 사항을 모두 고려하면 문제를 더 잘 정의해야합니다. 왜 문자열 배열과 비교해야합니까? (심지어 무엇을 의미합니까?)

데이터 유형이 정렬되면 (예 : numpy.close을 사용하여) 동등성이 아닌 친밀도를 테스트 할 수 있습니까?

+0

고맙습니다. '친밀감'에 대한 힌트는 저를 그것에 대해 생각하게하고 마지막으로 가장 가까운 점을 찾기 위해 함수를 정의하여 해결책을 찾았습니다. – PyLearner

관련 문제