我试图在Python中使用一些数据拟合曲线scipy.optimize.curve_fit.我遇到了错误ValueError: array must not contain infs or NaNs.
我不相信我的x或y数据包含infs或NaNs:
>>> x_array = np.asarray_chkfinite(x_array)
>>> y_array = np.asarray_chkfinite(y_array)
>>>
Run Code Online (Sandbox Code Playgroud)
给什么我的一些想法x_array,并y_array像在两端(x_array是计数,y_array是位数):
>>> type(x_array)
<type 'numpy.ndarray'>
>>> type(y_array)
<type 'numpy.ndarray'>
>>> x_array[:5]
array([0, 0, 0, 0, 0])
>>> x_array[-5:]
array([2919, 2965, 3154, 3218, 3461])
>>> y_array[:5]
array([ 0.9999582, 0.9999163, 0.9998745, 0.9998326, 0.9997908])
>>> y_array[-5:]
array([ 1.67399000e-04, 1.25549300e-04, 8.36995200e-05,
4.18497600e-05, -2.22044600e-16])
Run Code Online (Sandbox Code Playgroud)
我的功能:
>>> def func(x,alpha,beta,b):
... return ((x/1)**(-alpha) …Run Code Online (Sandbox Code Playgroud) 我有一个Wi-Fi捕获(.pcap),我正在分析,并在我看来是802.11规范和Wireshark对数据的解释之间的不一致.具体而言,我试图拆分的是2字节的802.11 帧控制字段.
摘自http://www4.ncsu.edu/~aliu3/802.bmp,帧控制字段的子字段格式如下:

以下是数据包的Wireshark屏幕上限让我感到困惑:

因此,根据Wireshark屏幕截图,帧控制字段的标志部分(最后8位)是0x22,这很好.如何将版本/类型/子类型0x08与Wireshark的框架描述相匹配让我感到困惑.
0x08= 0000 1000b,我认为会转换为Version = 00,Type = 00(我认为管理不是数据框)和Subtype = 1000(我认为它是一个信标框).所以我希望这个帧是一个管理帧,更具体地说,是一个信标帧.然而,Wireshark将其报告为数据框架.这是混淆了我的第二件事就是Wireshark是连拉0x20从线Type/Subtype: Data (0x20).
谁能澄清我对802.11 spec/Wireshark捕获的解释,以及为什么两者不一致?
方案如下.我有一个已经部署的应用程序被人们使用.我正在考虑实施一些实验性的蓝牙低功耗功能,但在此之前,我想对已经有蓝牙开启/离开蓝牙的用户数进行"野外"调查.因此,我只想在后台检查这一点,然后将服务器的数据发送回服务器上已有蓝牙的用户数量,而无需实际使用蓝牙通信.
我已经CBCentralManager在我的应用程序中成功实例化了一个,并且可以在实例化后立即检索蓝牙状态,并通过蓝牙状态更新centralManagerDidUpdateState:.这一切都很好.我遇到的问题是,如果状态是CBCentralManagerStatePoweredOff,则设备会弹出警告提示用户"打开蓝牙以允许[应用程序名称]连接到附件".这是我试图避免的提示.在这个阶段,我只想调查离开蓝牙的用户数量 - 我不想使用蓝牙连接.
那么,如果您不打算使用蓝牙连接,有没有办法检查蓝牙状态而不提示用户?
我正在写一个Go程序.从这个Go程序,我想调用另一个文件中定义的Python函数并接收函数的返回值,这样我就可以在Go程序的后续处理中使用它.我在Go程序中收到任何返回的数据时遇到问题.下面是我认为可行的最小例子,但显然不是:
gofile.go
package main
import "os/exec"
import "fmt"
func main() {
fmt.Println("here we go...")
program := "python"
arg0 := "-c"
arg1 := fmt.Sprintf("'import pythonfile; print pythonfile.cat_strings(\"%s\", \"%s\")'", "foo", "bar")
cmd := exec.Command(program, arg0, arg1)
fmt.Println("command args:", cmd.Args)
out, err := cmd.CombinedOutput()
if err != nil {
fmt.Println("Concatenation failed with error:", err.Error())
return
}
fmt.Println("concatentation length: ", len(out))
fmt.Println("concatenation: ", string(out))
fmt.Println("...done")
}
Run Code Online (Sandbox Code Playgroud)
pythonfile.py
def cat_strings(a, b):
return a + b
Run Code Online (Sandbox Code Playgroud)
如果我打电话给go run gofile我得到以下输出:
here we go... …Run Code Online (Sandbox Code Playgroud) 我在Python中有一个相对较大的字典,并希望不仅能够从中删除项目,而且实际上从我的程序中的这些删除中回收内存.我正在遇到一个问题,虽然我从字典中删除项目甚至手动运行垃圾收集器,但Python似乎并没有释放内存本身.
一个简单的例子:
>>> tupdict = {}
# consumes around 2 GB of memory
>>> for i in xrange(12500000):
... tupdict[i] = (i,i)
...
# delete over half the entries, no drop in consumed memory
>>> for i in xrange(7500000):
... del tupdict[i]
...
>>> import gc
# manually garbage collect, still no drop in consumed memory after this
>>> gc.collect()
0
>>>
Run Code Online (Sandbox Code Playgroud)
我想现在发生的事情是,尽管条目被删除并且垃圾收集器运行,但Python不会继续并调整字典大小.我的问题是,有没有简单的方法,或者我可能需要更严肃地重新考虑我如何编写我的程序?
我正在使用matplotlib生成用于出版的图形,并且需要非常精确的图形输出.我需要这个,以便我可以确定在插入乳胶文档时不需要调整图形,这会弄乱图中的字体大小,我想保持与字体大小的一致比例主要文件.
我需要使用这个bbox_extra_artists参数,savefig因为如果我不这样做的话,我会在底部有一个传说.我遇到的问题是,我还没有找到一个办法让原图尺寸我指定figsize创建调用后兑现的情节时savefig用bbox_extra_artists.
我的电话savefig看起来像这样:
savefig(output_file, bbox_inches='tight', pad_inches=0.0,dpi=72.27,bbox_extra_artists=(lgd,tp,ur,hrs))
Run Code Online (Sandbox Code Playgroud)
我指定的图形宽度figsize是:
516.0 * (1/72.27) = 7.1398 inches = 181.3532 millimeters
Run Code Online (Sandbox Code Playgroud)
我使用savefig()上面的调用获得的输出PDF宽度是171 millimeters(不是所需的181.3532毫米).
我在其他问题上提到的解决方案是在SO上打电话给tight_layout().所以,紧接着我的savefig()电话,我提出以下内容:
plt.tight_layout(pad=0.0,h_pad=0.0,w_pad=0.0)
Run Code Online (Sandbox Code Playgroud)
这会产生一个宽度的图形183 millimeters(同样,不是我想要的181.3532毫米).如果我使用tight_layout,并bbox_extra_artists从我的调用中删除参数savefig(),我得到的宽度190 millimeters(再次,不是我想要的181.3532毫米).除了bbox_extra_artists在我的情况下删除通过切断事物来破坏数字之外.
所以我想这是一个两部分问题:
tight_layout,即使没有bbox_extra_artists,为什么输出数字大小不正确?bbox_extra_artists?我知道几毫米听起来像是一个微不足道的差异,但事实上,与我有任何不同之处.这意味着存在一些变量,这可能会在我的其他数字中发生变化,从而导致一定程度的误差,并且该错误可能会在其他地方被放大.
采取以下代码:
NSError *error;
NSString *myJSONString = @"{ \"foo\" : 0.1}";
NSData *jsonData = [myJSONString dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *results = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&error];
Run Code Online (Sandbox Code Playgroud)
我的问题是,是results[@"foo"]一个NSDecimalNumber,还是具有有限二进制精度的东西,比如double或float?基本上,我有一个应用程序需要一个随附的无损精度NSDecimalNumber,并且需要确保JSON反序列化不会因为双精度/浮点数等而导致舍入.
例如,如果它被解释为浮点数,我会遇到这样的问题:
float baz = 0.1;
NSLog(@"baz: %.20f", baz);
// prints baz: 0.10000000149011611938
Run Code Online (Sandbox Code Playgroud)
我尝试将解释foo为NSDecimalNumber并打印结果:
NSDecimalNumber *fooAsDecimal = results[@"foo"];
NSLog(@"fooAsDecimal: %@", [fooAsDecimal stringValue]);
// prints fooAsDecimal: 0.1
Run Code Online (Sandbox Code Playgroud)
但后来我发现调用stringValue一个NSDecimalNumber并不打印所有有效数字,例如..
NSDecimalNumber *barDecimal = [NSDecimalNumber decimalNumberWithString:@"0.1000000000000000000000000000000000000000000011"];
NSLog(@"barDecimal: %@", barDecimal);
// prints barDecimal: 0.1
Run Code Online (Sandbox Code Playgroud)
...所以打印fooAsDecimal并没有告诉我results[@"foo"]JSON解析器是否在某些时候舍入到有限精度.
为了清楚起见,我意识到我可以使用字符串而不是JSON表示中的数字来存储foo的值,即"0.1"代替0.1 …
我使用的是最新的Google Maps API.我的问题是这样的:
我想删除MyLocation按钮(蓝点/箭头)而不禁用MyLocation层.
如果我使用此代码:
googleMap.getUiSettings().setMyLocationButtonEnabled(false);
Run Code Online (Sandbox Code Playgroud)
它不起作用,除非我添加:
googleMap().setMyLocationEnabled(false);
Run Code Online (Sandbox Code Playgroud)
但我想保持真实.有什么建议?
我正在开发一个应用程序,我想跟踪移动用户在GPS不可用的建筑物内的位置.用户在众所周知的固定位置(精确到5厘米内)开始,此时电话中的加速度计将被激活以跟踪相对于该固定位置的任何进一步的移动.我的问题是,在当代智能手机(iphone,Android手机等)中,人们可以准确地根据这些手机通常配备的加速度计来跟踪某些人的位置吗?
具体的例子很好,例如"如果我从起点移动50米X,从起点移动35米Y,从起点移动5米Z,我可以预期我的位置近似在+/- 80之内大多数现有智能手机上的厘米",或者其他什么.
我对卡尔曼滤波器等技术只有肤浅的理解来校正漂移,但是如果这些技术与我的应用相关并且有人想要描述我可能从这些技术中获得的校正的质量,那将是一个加分.
python ×4
android ×2
plot ×2
802.11 ×1
geolocation ×1
go ×1
google-maps ×1
ios ×1
java ×1
json ×1
matplotlib ×1
objective-c ×1
r ×1
scipy ×1
wifi ×1
wireshark ×1