小编ger*_*rit的帖子

我何时可以传递函数句柄?

我有一个缓存评估功能.作为参数之一,它需要一个函数句柄.在某些情况下,函数句柄是不可访问的,我不太明白为什么.下面的例子显示了让我难过的原因:

>> 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)

matlab stack namespaces function-handle matlab-class

7
推荐指数
1
解决办法
1358
查看次数

如何将 git lfs 与“普通”git 一起使用

我将普通(非 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 呢?

git git-lfs

7
推荐指数
2
解决办法
7779
查看次数

pandas 数据帧上的 s3fs gzip 压缩

我正在尝试使用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)

写入问题的建议/替代方案?先感谢您!。

python amazon-s3 dask python-s3fs

7
推荐指数
1
解决办法
1722
查看次数

如何在Numpy中屏蔽记录数组的元素?

我理解如何创建一个掩码数组,我想在记录数组中使用掩码,以便我可以使用命名属性访问这些数据.当我从一个蒙版数组创建一个记录数组时,掩码似乎"丢失"了:

>>> 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)

python numpy structured-array masked-array

6
推荐指数
1
解决办法
1815
查看次数

在matlab中传递冒号作为函数的参数

我想知道是否可以使用冒号":"作为函数的参数.

像这样的东西:

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"作为函数的参数传递时,我得到一个奇怪的错误,它没有产生错误,但是在函数内部,没有赋值参数(甚至没有其他参数).有人知道会发生什么吗?

syntax matlab

6
推荐指数
1
解决办法
844
查看次数

将断点保存到文件

在调试我的Python代码时,我从命令行通过ipdb运行一个脚本,并设置了许多断点.然后我在一个或多个模块中进行一些更改,然后重新运行.但是,如果我只是使用运行模块,请不要重新加载.为了确保它们存在,我可以存在并完全重新启动Python,但是我需要重置所有断点,如果我有很多并且如果一遍又一遍地完成,那么这很麻烦.

有没有办法将断点保存到(i)pdb中的文件中,这样在不改变行号的小改动后,我可以转储断点,重启Python + pdb,然后重新加载断点?相当于Matlabs X = dbstatus,保存/加载X和设置dbstop(X).

python debugging pdb ipdb

6
推荐指数
1
解决办法
848
查看次数

如何将每个 Parquet 行组读入单独的分区?

我有一个包含 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 行组读入单独的分区?或者数据必须分布在不同的文件中才能正常工作吗?

python dataframe parquet dask

6
推荐指数
1
解决办法
3970
查看次数

LookupError:setuptools-scm 无法检测版本(使用 python setup.py install 时)

I\xe2\x80\ x99m尝试在python虚拟环境 3.7(名为\xe2\x80\x9cpy37\xe2\x80\x9d)。

\n

我输入:

\n
    \n
  1. git 克隆https://github.com/richpsharp/ipbes-analysis.git
  2. \n
  3. cd ipbes-analysis\\ipbes-ndr
  4. \n
  5. python setup.py 安装
  6. \n
\n

但是,我收到错误:

\n
C:\\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)

python setuptools setup.py setuptools-scm

6
推荐指数
0
解决办法
8677
查看次数

readthedocs和setuptools scm版本错误

我有一个刚刚更新为使用 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)

构建文档时构建日志不会提及版本。

有可能解决这个问题吗?

谢谢

setuptools read-the-docs setuptools-scm

5
推荐指数
1
解决办法
2261
查看次数

ReadTheDocs + Sphinx + setuptools_scm:如何?

我有一个项目,我通过标签管理版本git。然后,我使用setuptools_scm在 my 中获取此信息setup.py,并生成一个文件 ( _version.py),该文件在生成 的轮子时包含在内pip

此文件未被跟踪,git因为:

  1. 它具有可以通过以下方式收集的相同信息git
  2. 这会造成一个循环的情况,造轮子会修改版本,从而改变源,并生成一个新版本

现在,当我构建文档时,从中获取此版本变得很自然_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

5
推荐指数
1
解决办法
852
查看次数