2017-12-09 1 views
1

내가이누군가 파이썬 함수에 대해 정확히 무엇을 설명 할 수 있습니까? 내가 파이썬에서 알고있는

blabla = Classname().somefunctions() 

처럼 뭔가를 쓰기하지만,이 경우 모두 "np.arange"과에 "바꿀"기능이며, "np.arange"은을하기 때문에 그것은 나를 혼란스럽게 할 수있다 함수이며 클래스처럼 취급됩니다. 질문은 이것이 어떻게 가능한가?

import numpy as np 
a = np.arange(15).reshape(3, 5) 
print(a) 
+1

'...처럼 취급 : 당신은 예를 들어 코드가 np.(arange)을 평가하고 그래서 reshape(3, 5)

후이 해당하는 것입니다 무엇을이 경우 "HELLO WORLD".lower()

을 할 수있는 이유 학급 - 당신이 그 성명서가 의미하는 것을 설명 할 수 있습니까? – wwii

+0

[방법 연쇄] (https://en.wikipedia.org/wiki/Method_chaining) – wwii

답변

2

파이썬은 모든 변수가 객체 인 객체 지향 언어입니다. np.arangereturnsndarray 개체입니다. 그리고 ndarray 개체의 reshape 메서드를 호출 할 수 있습니다. 두 가지의 체인과 변수 blabla

에 클래스 Classname()에있는 방법 somefunctions()를 호출하여 반환 된 값을 할당한다

blabla = Classname().somefunctions() 

:

import numpy as np 

a = np.arange(15) 

type(a) 
Out[148]: numpy.ndarray 

a 
Out[149]: array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]) 

a = a.reshape(3, 5) 

type(a) 
Out[151]: numpy.ndarray 

a 
Out[152]: 
array([[ 0, 1, 2, 3, 4], 
     [ 5, 6, 7, 8, 9], 
     [10, 11, 12, 13, 14]]) 
1

나는이 동작을 혼동 생각 함수 numpy 모듈 :
첫 번째 a = np.arange(15)은 크기 15의 배열을 만들고 배열하고이라는 변수에 할당합니다및 :
두 번째 a.reshape(3, 5)은 배열을 각각 5 개 요소가 포함 된 3 개 배열의 배열에 a으로 바꿉니다.

import numpy as np 
a = np.arange(15) #-> [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14] 
a = a.reshape(3, 5) #-> [[ 0 1 2 3 4] [ 5 6 7 8 9] [10 11 12 13 14]] 
print(a) 
0

numpy.arangendarray 개체를 반환합니다.

numpy.reshape은 배열을 입력으로 사용하는 classmethod이지만 혼란 스러울 수 있습니다. 그러나 ndarray 개체에서 사용할 수있는 메서드 인 numpy.ndarray.reshape과 같은 방법이 있습니다. 귀하의 경우, 사용 된 후자의 방법입니다.

1

np.arange(15)이 클래스의 인스턴스를 반환하기 때문에 이런 현상이 발생합니다. 실제로 파이썬의 모든 것은 클래스입니다.

import numpy as np 
a = np.arange(15) 
a = a.reshape(3, 5) 
print(a) 
관련 문제