2017-12-30 5 views
1

문자열을 포함하는 ndarray의 경우 dtype은 dtype (S #) 형식으로 반환됩니다. 여기서 #은 문자열의 길이를 나타냅니다. 도면에 목록에서 생성 된 어레이 'A'에 도시 된 바와 같이파이썬에서 문자열을 포함하는 ndarray의 dtype

result of dtype attribute

[1 ', 2', '3']. 배열이 만들어지면 모든 요소가 문자열 유형이됩니다. 배열 'b'는 목록 [ '1', 2, '3']에서 생성됩니다.

a.dtype은 S21이고 b.dtype은 S1입니다. a와 b의 요소 길이는 1입니다. 모든 요소의 길이가 1이더라도 첫 번째 배열의 요소 길이가 21로 왜 표시됩니까?

1이 9223372036854775807로 바뀌더라도 dtype은 'S21'이됩니다. 9223372036854775808을 사용하면 dtype이 'S20'이됩니다. 어떻게 이런 일이 발생합니까 누군가 제발 설명해주십시오.

답변

0

np.array은 컴파일 된 코드이므로 정확히 무슨 일이 일어나는지 살펴 봐야합니다. 나는 어떤 문서를 본 기억이 없다. 따라서 가장 쉬운 방법은 일부 값을 시도하고 패턴을 찾는 것입니다.

첫 번째 요소가 문자열이면 가장 긴 문자열 (숫자로는 str(i))이 사용 된 것처럼 보입니다.

첫 번째 숫자가 기본 크기로 시작하는 것으로 보입니다.

dtype이 일부 문자열을 자르지 않으면이 동작에 대해 너무 걱정하지 않아도됩니다. 중요하면 자신의 길이를 정의하는 것이 좋습니다.

+0

목록 [True, 'a']에서 배열을 만들려고했습니다. 생성 된 배열은 dtype 'S5'를가집니다. dtype은 목록의 첫 번째 요소가 정수인 경우에만 'S21'을 표시합니다. 첫 번째 요소가 float 값인 경우 생성 된 배열의 dtype은 'S32'로 표시됩니다. – Sharon

+0

다른 부울은 False이며 5 자입니다. 다른 값은 정수 및 부동 소수점의 최대 인쇄 너비 일 수도 있고, 어떤 식 으로든 그 값에 연결될 수도 있습니다. – hpaulj

+0

genfromtxt와'dtype = None' 일 때 dtype을 선택하는 방법을 볼 수 있습니다. 열에 숫자와 문자열이 섞여 있거나 실수로 문자열 헤더가 포함되어있는 경우 그 코드의 대부분은 파이썬입니다. – hpaulj

관련 문제