我有一个缓存评估功能.作为参数之一,它需要一个函数句柄.在某些情况下,函数句柄是不可访问的,我不太明白为什么.下面的例子显示了让我难过的原因:
>> A.a = @plus; feval(@A.a, 1, 1)
ans =
2
>> clear A
>> A.a.a = @plus; feval(@A.a.a, 1, 1)
Error using feval
Undefined function 'A.a.a' for input arguments of type 'double'.
Run Code Online (Sandbox Code Playgroud)
因此,如果我将一个函数句柄存储为一个结构成员,如果它是一个深度,我可以传递它,但如果它是两个级别深,则不能.在我的实际使用情况下,我有一个结构D保存各种类别的许多(117)的情况下,所以其实我有stct.obj.meth,这里stct是一个结构,obj是一个类的实例/对象,meth是一种方法.传递@stct.obj.meth失败,但如果我分配A = stct.obj,则传递@A.meth成功.
在什么条件下我可以将函数句柄作为参数传递,以便它仍然可以在堆栈中访问?
编辑:虽然在上面的用例中,我可以简单地删除@因为@plus已经是一个函数句柄.但是,请考虑以下情况:
>> type cltest.m
classdef cltest < handle
methods
function C = mymeth(self, a, b)
C = a + b;
end
end …Run Code Online (Sandbox Code Playgroud) 我将普通(非 lfs)存储库克隆到本地驱动器。现在我想向其中添加一个大于 100MB 的文件并将更改提交到存储库。我为此使用了以下命令:
git clone ....
Run Code Online (Sandbox Code Playgroud)
然后,我复制要添加到存储库的大小 >100MB 的文件。假设该文件的名称是“文件名”。
git lfs init
git lfs track "filename"
git add "filename"
git commit -m "commit message"
git push -u origin
Run Code Online (Sandbox Code Playgroud)
此操作失败,并显示文件大小错误消息,指出仅允许最大 100MB 的文件大小。
那么在这种情况下我该如何使用 git lfs 呢?
我正在尝试使用s3fs库和 pandas在 S3 上将数据帧编写为 CSV 文件。尽管有文档,但恐怕 gzip 压缩参数不适用于 s3fs。
def DfTos3Csv (df,file):
with fs.open(file,'wb') as f:
df.to_csv(f, compression='gzip', index=False)
Run Code Online (Sandbox Code Playgroud)
此代码将数据帧保存为 S3 中的新对象,但保存为纯 CSV 而非 gzip 格式。另一方面,使用此压缩参数可以正常工作的读取功能。
def s3CsvToDf(file):
with fs.open(file) as f:
df = pd.read_csv(f, compression='gzip')
return df
Run Code Online (Sandbox Code Playgroud)
写入问题的建议/替代方案?先感谢您!。
我理解如何创建一个掩码数组,我想在记录数组中使用掩码,以便我可以使用命名属性访问这些数据.当我从一个蒙版数组创建一个记录数组时,掩码似乎"丢失"了:
>>> data = np.ma.array(np.ma.zeros(30, dtype=[('date', '|O4'), ('price', '<f8')]),mask=[i<10 for i in range(30)])
>>> data
masked_array(data = [(--, --) (--, --) (--, --) (--, --) (--, --) (--, --) (--, --) (--, --)
(--, --) (--, --) (0, 0.0) (0, 0.0) (0, 0.0) (0, 0.0) (0, 0.0) (0, 0.0) (0, 0.0) (0, 0.0) (0, 0.0) (0, 0.0) (0, 0.0) (0, 0.0) (0, 0.0) (0, 0.0)
(0, 0.0) (0, 0.0) (0, 0.0) (0, 0.0) (0, 0.0) (0, 0.0)],
mask = [(True, …Run Code Online (Sandbox Code Playgroud) 我想知道是否可以使用冒号":"作为函数的参数.
像这样的东西:
function y=func(x)
if x is a colon
do this
else
do that
end
Run Code Online (Sandbox Code Playgroud)
也可以将关键工作结束作为函数的参数传递,还有1:结束,3:结束5等等......我怀疑这是可能的,但我想确定.
另外,当我将"1:end"作为函数的参数传递时,我得到一个奇怪的错误,它没有产生错误,但是在函数内部,没有赋值参数(甚至没有其他参数).有人知道会发生什么吗?
在调试我的Python代码时,我从命令行通过ipdb运行一个脚本,并设置了许多断点.然后我在一个或多个模块中进行一些更改,然后重新运行.但是,如果我只是使用运行模块,请不要重新加载.为了确保它们存在,我可以存在并完全重新启动Python,但是我需要重置所有断点,如果我有很多并且如果一遍又一遍地完成,那么这很麻烦.
有没有办法将断点保存到(i)pdb中的文件中,这样在不改变行号的小改动后,我可以转储断点,重启Python + pdb,然后重新加载断点?相当于Matlabs X = dbstatus,保存/加载X和设置dbstop(X).
我有一个包含 10 行组的镶木地板文件:
In [30]: print(pyarrow.parquet.ParquetFile("/tmp/test2.parquet").num_row_groups)
10
Run Code Online (Sandbox Code Playgroud)
但是当我使用 Dask Dataframe 加载它时,它被读入单个分区:
In [31]: print(dask.dataframe.read_parquet("/tmp/test2.parquet").npartitions)
1
Run Code Online (Sandbox Code Playgroud)
这似乎与此答案相矛盾,该答案指出Dask Dataframe 将每个 Parquet 行组读取到单独的分区中。
如何使用 Dask Dataframe 将每个 Parquet 行组读入单独的分区?或者数据必须分布在不同的文件中才能正常工作吗?
I\xe2\x80\ x99m尝试在python虚拟环境 3.7(名为\xe2\x80\x9cpy37\xe2\x80\x9d)。
\n我输入:
\n但是,我收到错误:
\nC:\\Users\\86134>activate py37\n(py37) C:\\Users\\86134>cd ipbes-analysis\\ipbes-ndr\n(py37) C:\\Users\\86134\\ipbes-analysis\\ipbes-ndr>python setup.py install\nTraceback (most recent call last):\n File "setup.py", line 26, in <module>\n language="c++",\n File "F:\\Anaconda3\\envs\\py37\\lib\\site-packages\\setuptools\\__init__.py", line 153, in setup\n return distutils.core.setup(**attrs)\n File "F:\\Anaconda3\\envs\\py37\\lib\\distutils\\core.py", line 108, in setup\n _setup_distribution = dist = klass(attrs)\n File "F:\\Anaconda3\\envs\\py37\\lib\\site-packages\\setuptools\\dist.py", line 433, in __init__\n k: v for k, v in attrs.items()\n File "F:\\Anaconda3\\envs\\py37\\lib\\distutils\\dist.py", line 292, in __init__\n …Run Code Online (Sandbox Code Playgroud) 我有一个刚刚更新为使用 setuptools_scm 的包,发现 readthedocs 中的版本号是错误的。
http://sshuttle.readthedocs.org/en/v0.77/显示:
Version: 0.78.dev0+ng083293e.d20160304
Run Code Online (Sandbox Code Playgroud)
然而,由于版本 083293e 具有 0.77 标签,因此版本字符串应该只是 0.77
看起来 readthedocs 可能会在构建之前对我的源代码进行更改。
我查看了 readthedocs 构建日志,似乎在某个阶段具有正确的版本(0.77),但这是在构建文档之前。
Processing dependencies for sshuttle==0.77
Finished processing dependencies for sshuttle==0.77
Run Code Online (Sandbox Code Playgroud)
构建文档时构建日志不会提及版本。
有可能解决这个问题吗?
谢谢
我有一个项目,我通过标签管理版本git。然后,我使用setuptools_scm在 my 中获取此信息setup.py,并生成一个文件 ( _version.py),该文件在生成 的轮子时包含在内pip。
此文件未被跟踪,git因为:
git现在,当我构建文档时,从中获取此版本变得很自然_version.py,并且这一切在本地运行良好。
但是,当我尝试在 ReadTheDocs 中执行此操作时,文档的构建失败,因为_version.py未由 跟踪git,因此 ReadTheDocs 在从存储库获取源代码时找不到它。
编辑:我尝试使用重复中提出的方法,该方法与文档中指示的方法相同setuptools_scm,即使用docs/conf.py:
from pkg_resources import get_distribution
__version__ = get_distribution('numeral').version
... # I use __version__ to define Sphinx variables
Run Code Online (Sandbox Code Playgroud)
但我得到:
pkg_resources.DistributionNotFound:未找到“数字”分布,并且是应用程序所需的
(同样,在本地构建文档可以正常工作。)
如何解决这个问题而不需要在两个地方维护版本号?
python setuptools python-sphinx read-the-docs setuptools-scm
python ×6
setuptools ×3
dask ×2
matlab ×2
amazon-s3 ×1
dataframe ×1
debugging ×1
git ×1
git-lfs ×1
ipdb ×1
masked-array ×1
matlab-class ×1
namespaces ×1
numpy ×1
parquet ×1
pdb ×1
python-s3fs ×1
setup.py ×1
stack ×1
syntax ×1