因为numpy.arange()用于ceil((stop - start)/step)确定项目的数量,所以小的浮点精度(stop = .400000001)可能会向列表中添加一个意想不到的值。
第一种情况不包括停止点(拟)
>>> print(np.arange(.1,.3,.1))
[0.1 0.2]
Run Code Online (Sandbox Code Playgroud)
第二种情况包括停止点(非预期)
>>> print(np.arange(.1,.4,.1))
[0.1 0.2 0.3 0.4]
Run Code Online (Sandbox Code Playgroud)
numpy.linspace()解决了这个问题,np.linspace(.1,.4-.1,3)。但要求您知道步骤数。np.linspace(start,stop-step,np.ceil((stop-step)/step))导致相同的不一致。
如何在float不知道范围内元素数量的情况下生成可靠范围?
考虑我想要生成未知精度的浮点索引的情况
np.arange(2.00(...)001,2.00(...)021,.00(...)001)
Run Code Online (Sandbox Code Playgroud) 对于任何函数,我能够通过明确定义我期望的输出数来指示要返回的变量 [out1,out2,...,outn] = ...
编辑:能够最大化潜在的输出数量也很有用
示例问题
以下代码完全符合预期(是的,它是多余的myArray(IND) = 1;)
[I,J] = ind2sub(size(myArray),IND)
myArray(I,J) = 1;
Run Code Online (Sandbox Code Playgroud)
当我尝试直接传递函数参数时,我得不到我想要的结果
myArray(ind2sub(size(myArray),IND)) = 1;
Run Code Online (Sandbox Code Playgroud)
我有意义的myArray(I) = 1;时候得到了myArray(I,J) = 1;
题
如何在不明确定义输出参数的情况下指示返回多少输出变量?
我希望eval()家庭中的某些功能或某些类型转换[],{},(:), etc.可以解决问题,但我没有看到任何文档或者让它们中的任何一个工作.