Gus*_*ava 4 python arrays numpy pandas
请帮助我理解:view熊猫是什么意思.我知道如果我们改变某些东西,view我们总是在原始对象中进行更改.
但是对象和原始对象的视图具有不同id's的例子.这是否意味着它view是另一个参考原始对象的对象?机制是什么?
我试过但找不到解释.
import pandas as pd
import numpy as np
df = pd.DataFrame({'x': [1,2]})
print(df)
df_sub = df[0:1]
df_sub.x = -1
print(df_sub._is_view) # True
print(id(df) == id(df_sub)) # False
print(np.shares_memory(df, df_sub)) # True
Run Code Online (Sandbox Code Playgroud)
要了解View是什么,您必须知道数组是什么.数组不仅是您放入其中的"东西"(项目).它还需要(除其他之外)有关元素数量,数组形状以及如何解释元素的信息.
所以数组是一个至少包含这些属性的对象:
class Series:
data # A pointer to where your array is stored
size # The number of items in your array
shape # The shape of your array
dtype # How to interpret the array
Run Code Online (Sandbox Code Playgroud)
因此,当您创建一个视图时,会创建一个新的数组对象但是(这很重要)View的data指针指向原始数组.它可以是偏移但它仍指向属于原始数组的一个内存位置.但即使它与原始大小共享一些数据,形状,dtype(,...)可能已经改变,因此它需要一个新对象.这就是他们有不同的原因id.
把它想象成窗户.你有一个花园(阵列),你有几个窗口,每个窗口是一个不同的对象,但所有窗口都在同一个(你的)花园.好的,授予,通过一些切片操作,你会有更多类似escher的窗口,但隐喻总是缺少一些细节:-)
| 归档时间: |
|
| 查看次数: |
875 次 |
| 最近记录: |