는 전방위 DTYPE NumPy와 하나 개의 배열 (각 DTYPE위한) 다수의 블록으로 변환한다. 이 변환은 큰 프레임의 경우 느려질 수 있습니다.
In [11]: pd.DataFrame([[1, 2.]]).values
Out[11]: array([[ 1., 2.]])
In [12]: pd.DataFrame([[1, 2., 'a']]).values
Out[12]: array([[1, 2.0, 'a']], dtype=object)
타이밍을 가진 예 :
In [21]: df = pd.DataFrame(np.random.randn(10000))
In [22]: %timeit df.values # no conversion
100000 loops, best of 3: 3.72 µs per loop
In [23]: df[1] = 'a' # add column of object dtype
In [24]: %timeit df.values # conversion to object dtype
1000 loops, best of 3: 681 µs per loop
당신은 ._data
속성을 통해 BlockManager에 저장하는 방법을 데이터를 볼 수 있습니다. 이 값은 계산 복귀 NumPy와 배열이 다른 ID/메모리 주소를 가지고 있으므로 A is df.values
이 False마다 인 특성 때문에
는, 질문에 답한다. numpy의 array_equal과 같은 것을 사용해야합니다.
In [31]: df.values is df.values
Out[31]: False
In [32]: np.array_equal(df.values, df.values)
Out[32]: True
설명해 주셔서 감사합니다. 이제는 .value 호출에 대한 기본 동작 방식을 이해합니다. – user3377229