寻找一种可靠地识别numpy对象是否为视图的方法.
相关问题在此之前(这里,这里,这里)出现了很多次,人们提供了一些解决方案,但似乎都有问题:
pandas
现在使用的测试是调用某个视图my_array.base is not None
.这似乎总是捕捉到观点,但也提供了许多误报(即使它不是,它报告某些东西是一种观点的情况).numpy.may_share_memory()
将检查两个特定的数组,但不会回答一般
flags['OWNDATA'])
被报道(第三评论第一个答案)在某些情况下失败.(我感兴趣的原因是我正在为大熊猫实施写时复制,而保守的指标导致过度复制.)
有没有一种简单的方法可以检查两个数据框是不同的副本还是不涉及操作的相同基础数据的视图?我试图抓住每一个生成的时间,并且考虑到规则似乎有多特殊,我想要一种简单的测试方法.
例如,我认为"id(df.values)"在各个视图中都是稳定的,但它们似乎不是:
# Make two data frames that are views of same data.
df = pd.DataFrame([[1,2,3,4],[5,6,7,8]], index = ['row1','row2'],
columns = ['a','b','c','d'])
df2 = df.iloc[0:2,:]
# Demonstrate they are views:
df.iloc[0,0] = 99
df2.iloc[0,0]
Out[70]: 99
# Now try and compare the id on values attribute
# Different despite being views!
id(df.values)
Out[71]: 4753564496
id(df2.values)
Out[72]: 4753603728
# And we can of course compare df and df2
df is df2
Out[73]: False
Run Code Online (Sandbox Code Playgroud)
其他答案我已经抬头试图给出规则,但似乎不一致,也不回答如何测试的问题:
当然: - http://pandas.pydata.org/pandas-docs/stable/indexing.html#returning-a-view-versus-a-copy …
尝试通过Windows NT上的cygwin界面使用anaconda设置环境,并且失败.
创建环境(conda create -n test_env
)工作正常.但activate test_env
失败了.
我尝试用它来破解它:
export PATH=/cygdrive/c/users/nick/anaconda3/envs/test:$PATH
Run Code Online (Sandbox Code Playgroud)
这修复了一些行为(which python
指向正确的python).但是,如果我然后执行"conda install"命令,它将安装到根anaconda目录中,而不是环境中.也许导出是bash会话的本地导出,而conda调用不同版本的PATH?有一种方法可以修改PATH全局吗?
有没有办法测试数据帧是否按照不是索引的给定列进行排序(即非索引列的等效于is_monotonic())而不重新调用排序,并且不将列转换为指数?
在RStudio中执行代码块时,执行实际上不会在发生错误时停止.例如,如果我在打开的编辑器中有以下代码:
x <- 'test'
stopifnot(is.numeric(x))
print('hello world')
Run Code Online (Sandbox Code Playgroud)
并运行它(使用命令返回或单击"运行"按钮),它会打印错误,然后继续前进并执行print语句.
有没有办法配置RStudio不能超过错误?即使它停在上面第2行并且不进入打印声明?
编辑:刚刚意识到如果我使用command-R在标准R GUI中发送代码块,也会发生这种情况.
尝试使用3.4进行开发构建(以前在2.7中进行过管理).Python只是osx10.10上的anaconda安装.我可以得到
一世:
但是当我尝试导入大熊猫时,我得到:
import pandas as pd
Traceback (most recent call last):
File "<ipython-input-2-af55e7023913>", line 1, in <module>
import pandas as pd
File "/Users/Nick/github/pandas/pandas/__init__.py", line 13, in <module>
"extensions first.".format(module))
ImportError: C extension: 'hashtable' not built. If you want to import pandas from the source directory, you may need to run 'python setup.py build_ext --inplace' to build the C extensions first.
Run Code Online (Sandbox Code Playgroud)
请注意,当我执行build_ext时,我得到以下(显然很好)输出:
pandas(master)$python setup.py build_ext --inplace
running build_ext
skipping 'pandas/index.c' Cython extension (up-to-date) …
Run Code Online (Sandbox Code Playgroud) 尝试对不同的随机函数进行计时,以查看从列表中选择随机项目的最快方法。%timeit
想要给我“3个中最好的”最快时间,但由于运行是随机的,因此访问时间存在很大差异(从列表后面抓取,会很慢;从前面抓取,会很快)。
如何获得所有循环的平均值,而不是最好的?
\n\na = [0,6,3,1,3,9,4,3,2,6]\n\n%timeit random.choice(a)\n%timeit a[random.randint(0,len(a)-1)]\n%timeit a[np.random.randint(0,len(a)-1)]\n%timeit np.random.choice(a,1)[0]\n
Run Code Online (Sandbox Code Playgroud)\n\n当前输出(确认时间差异):
\n\n%timeit random.choice(a)\nThe slowest run took 9.87 times longer than the fastest. This could mean that an intermediate result is being cached \n1000000 loops, best of 3: 1.23 \xc2\xb5s per loop\n
Run Code Online (Sandbox Code Playgroud)\n\n更新:一种拼凑方法:
\n\n%time for i in range(100000): random.choice(a)\n%time for i in range(100000): a[random.randint(0,len(a)-1)]\n%time for i in range(100000): a[np.random.randint(0,len(a)-1)]\n%time for i in range(100000): np.random.choice(a,1)[0]\n
Run Code Online (Sandbox Code Playgroud)\n 我想使用pgadmin iii复制CSV文件.对此非常陌生.
当我从查询生成器运行"复制"命令时,我收到以下错误:
ERROR: could not open file 'C:\\Users\\Nick\\Documents\\CDR\\csv1.csv" for reading: Permission denied SQL state: 42501
Run Code Online (Sandbox Code Playgroud)
我发现这个提到其他一些地方(在这里 在这里,并在这里例如,和一般的解决方法是"Postgres的"添加到该文件的权限(人也劝动CSV到公用文件夹,但这会导致其他问题原因).
但是当我尝试向Windows 8中具有权限的人添加postgres时,当我检查名称时,我得到"找不到对象postgres"错误.
如果我添加"Everyone"它可以工作,但由于显而易见的原因,我不想留下一个带有"Everyone"访问权限的重要文件夹.
任何人都可以建议如何在Windows 8中赋予postgres权限?
谢谢!
尝试为SpatialPointsDataFrame中的每个点找到第二个SpatialPointsDataFrame中最近点的距离(相当于ArcGIS中两个SpatialPointDataFrames中的"最近"工具).
我可以通过使用gDistance计算所有成对距离并获取min(如此处的答案1)来做天真的实现,但我有一些巨大的数据集,并且正在寻找更高效的东西.
例如,这里有一个关于同一数据集中的点的knearneigh的技巧.
在r-sig-geo上交叉发布
试图理解pmap
执行一些令人尴尬的并行任务时出现的以下错误。在Linux服务器上运行。写入 HDF(并行调用的一部分)时可能会发生,但我不这么认为,因为堆栈跟踪没有指向正在执行的用户函数中的行,并且对 TCP 的引用表明它是并行调用的一部分。已经发生在多次连续运行中,所以不是一次性的侥幸。
Worker 139 terminated.
ERROR (unhandled task failure): EOFError: read end of file
Stacktrace:
[1] unsafe_read(::Base.AbstractIOBuffer{Array{UInt8,1}}, ::Ptr{UInt8}, ::UInt64) at ./iobuffer.jl:105
[2] unsafe_read(::TCPSocket, ::Ptr{UInt8}, ::UInt64) at ./stream.jl:752
[3] unsafe_read(::TCPSocket, ::Base.RefValue{NTuple{4,Int64}}, ::Int64) at ./io.jl:361
[4] read at ./io.jl:363 [inlined]
[5] deserialize_hdr_raw at ./distributed/messages.jl:170 [inlined]
[6] message_handler_loop(::TCPSocket, ::TCPSocket, ::Bool) at ./distributed/process_messages.jl:157
[7] process_tcp_streams(::TCPSocket, ::TCPSocket, ::Bool) at ./distributed/process_messages.jl:118
[8] (::Base.Distributed.##99#100{TCPSocket,TCPSocket,Bool})() at ./event.jl:73
Run Code Online (Sandbox Code Playgroud)
朱莉娅信息:
julia> versioninfo()
Julia Version 0.6.0
Commit 9036443 (2017-06-19 13:05 UTC)
Platform Info:
OS: Linux …
Run Code Online (Sandbox Code Playgroud)