Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 数据帧值C/F连续原因_Python_Arrays_Pandas_Numpy_Contiguous - Fatal编程技术网

Python 数据帧值C/F连续原因

Python 数据帧值C/F连续原因,python,arrays,pandas,numpy,contiguous,Python,Arrays,Pandas,Numpy,Contiguous,对于数字数据类型,熊猫数据帧值被实现为C连续numpy数组;对于字符串(对象)数据类型,熊猫数据帧值被实现为F连续numpy数组,原因是什么 将numpy作为np导入,将pandas作为pd导入 ai=np.array([[0,1,2],[3,4,5]],dtype=np.int64) af=np.array([[0,1,2.],[3,4,5.],dtype=np.float64) ao=np.array(['000'、'111'、'222']、['333'、'444'、'555']],dtyp

对于数字数据类型,熊猫数据帧值被实现为C连续numpy数组;对于字符串(对象)数据类型,熊猫数据帧值被实现为F连续numpy数组,原因是什么

将numpy作为np导入,将pandas作为pd导入
ai=np.array([[0,1,2],[3,4,5]],dtype=np.int64)
af=np.array([[0,1,2.],[3,4,5.],dtype=np.float64)
ao=np.array(['000'、'111'、'222']、['333'、'444'、'555']],dtype=object)
打印('C-连续:',
'i=',ai.flags['C_continuous'],
“f=”,af.flags['C_continuous'],
“o=”,ao.flags['C_continuous'],sep=”)
打印('C-连续:',
“i=”,pd.DataFrame(ai).values.flags['C_Continental'],
“f=”,pd.DataFrame(af).values.flags['C_continuous'],
“o=”,pd.DataFrame(ao.values.flags['C_Continental'],sep=”)
给予

C-连续:i=True f=True o=True
C-连续:i=真f=真o=假

谢谢你的帮助

pd.DataFrame(ai).values
ai
视图。修改
ai
中的元素会更改数据帧中的相应元素。对于对象情况,情况并非如此<代码>值
是一个副本。这就好像面向列的
系列
是主要的数据存储,而不是
\u值
。但我不知道如何测试它。@hpaulj谢谢!我想知道将数据帧的
数组存储为对象的F-连续数组是否有任何好处。我发现自己不得不担心Cython中的数字和对象值需要使用什么类型的内存视图,并希望理解为什么会这样做。为什么将所有数据类型存储在C-连续数组中是个坏主意?我不知道在创建数据帧时我们对
属性有多大的控制。您是否正在考虑键入的内存视图?在
ndarray
和它们之间有很好的关系,但是我没有看到任何关于
pandas
cython
@hpaulj的信息。是的,我实际上在使用pandas数据帧,但是正如您所指出的,cython没有与pandas集成,实际上我正在使用底层的numpy阵列,由于数组实现了Python缓冲区协议,因此使用数组的最佳方式是在Cython级别表示缓冲区的类型化内存视图,在处理对象时,将每列的值存储在一起可能更方便,例如,作为Fortran连续。