小编Cle*_*leb的帖子

SciPy curve_fit运行时错误,停止迭代

我正在scipy.optimize.curve_fit()以迭代的方式使用.

我的问题是,当它无法适应参数时,整个程序(以及迭代)停止,这就是它给出的错误:

RuntimeError: Optimal parameters not found: Number of calls to function has reached maxfev = 800.

我明白为什么它无法适应.我的问题是,有什么办法可以在Python 3.2.2中编写程序来忽略这种情况而只是继续吗?

python curve-fitting scipy

12
推荐指数
1
解决办法
1万
查看次数

在numpy数组上的Scipy插值

我有一个查找表,其定义如下:

       | <1    2    3    4    5+
-------|----------------------------
<10000 | 3.6   6.5  9.1  11.5 13.8
20000  | 3.9   7.3  10.0 13.1 15.9
20000+ | 4.5   9.2  12.2 14.8 18.2


TR_ua1 = np.array([ [3.6, 6.5, 9.1, 11.5, 13.8],
                    [3.9, 7.3, 10.0, 13.1, 15.9],
                    [4.5, 9.2, 12.2, 14.8, 18.2] ])
Run Code Online (Sandbox Code Playgroud)
  • 标题行元素是(hh)<1,2,3,4,5+
  • 标题列(inc)元素<10000,20000,20001+

用户将输入值示例(1.3,25,000),(0.2,50,000),依此类推.scipy.interpolate()应进行插值以确定正确的值.

目前,我能做到这一点的唯一方法是使用一堆if/ elifs如下所示.我很确定有更好,更有效的方法

这是我到目前为止所得到的:

import numpy as np
from scipy import interpolate

if (ua == 1):
    if (inc <= low_inc):  # low_inc = 10,000
      if …
Run Code Online (Sandbox Code Playgroud)

python interpolation numpy scipy

10
推荐指数
1
解决办法
7293
查看次数

当x和y值作为numpy数组给出时,查找所有局部Maxima和Minima

我有两个数组x,y如下:

x = np.array([6, 3, 5, 2, 1, 4, 9, 7, 8])
y = np.array([2, 1, 3, 5, 3, 9, 8, 10, 7])
Run Code Online (Sandbox Code Playgroud)

我发现当地最小值和最大值的索引如下:

sortId = np.argsort(x)
x = x[sortId]
y = y[sortId]
minm = np.array([])
maxm = np.array([])
while i < y.size-1:
   while(y[i+1] >= y[i]):
      i = i + 1

   maxm = np.insert(maxm, 0, i)
   i++
   while(y[i+1] <= y[i]):
      i = i + 1

   minm = np.insert(minm, 0, i)
   i++
Run Code Online (Sandbox Code Playgroud)

这段代码有什么问题?答案应该是索引minima = [2, 5, …

python numpy derivative

10
推荐指数
1
解决办法
3万
查看次数

如果索引操作返回视图或副本是不确定的,那么pandas中的视图点是什么?

我已经从R换成了熊猫.当我做类似的事情时,我经常得到SettingWithCopyWarnings

df_a = pd.DataFrame({'col1': [1,2,3,4]})    

# Filtering step, which may or may not return a view
df_b = df_a[df_a['col1'] > 1]

# Add a new column to df_b
df_b['new_col'] = 2 * df_b['col1']

# SettingWithCopyWarning!!
Run Code Online (Sandbox Code Playgroud)

我想我理解这个问题,虽然我很乐意了解我的错误.在给定的示例中,未定义是否df_b是视图df_a.因此,分配的效果df_b尚不清楚:它是否会影响df_a?通过在过滤时显式制作副本可以解决此问题:

df_a = pd.DataFrame({'col1': [1,2,3,4]})    

# Filtering step, definitely a copy now
df_b = df_a[df_a['col1'] > 1].copy()

# Add a new column to df_b
df_b['new_col'] = 2 * df_b['col1']

# No Warning now
Run Code Online (Sandbox Code Playgroud)

我认为有些东西是我遗漏的:如果我们真的无法确定我们是否创建了一个视图,那么哪些观点有用呢?来自pandas文档(http://pandas-docs.github.io/pandas-docs-travis/indexing.html?highlight=view#indexing-view-versus-copy)

除了简单的情况之外,很难预测它[ …

python views slice pandas

9
推荐指数
1
解决办法
406
查看次数

为什么.loc的行为会有所不同,具体取决于是打印还是分配值?

我对以下行为感到困惑.当我有这样的数据帧时:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(6, 4), columns=list('ABCD'), index=list('bcdefg'))
Run Code Online (Sandbox Code Playgroud)

看起来如下:

          A         B         C         D
b -0.907325  0.211740  0.150066 -0.240011
c -0.307543  0.691359 -0.179995 -0.334836
d  1.280978  0.469956 -0.912541  0.487357
e  1.447153 -0.087224 -0.176256  1.319822
f  0.660994 -0.289151  0.956900 -1.063623
g -1.880520  1.099098 -0.759683 -0.657774
Run Code Online (Sandbox Code Playgroud)

我收到了预期的错误

TypeError:无法对这些类型为'int'的索引器[3]进行切片索引

当我尝试使用以下切片时.loc:

print df.loc[3:, ['C', 'D']]
Run Code Online (Sandbox Code Playgroud)

因为我传递一个整数作为索引,而不是包含在其中的一个字母index.

但是,如果我现在尝试

df.loc[3:, ['C', 'D']] = 10
Run Code Online (Sandbox Code Playgroud)

它工作正常,并给我输出:

          A         B          C          D
b -0.907325  0.211740   0.150066  -0.240011 …
Run Code Online (Sandbox Code Playgroud)

python slice pandas

9
推荐指数
1
解决办法
436
查看次数

从numpy数组列表构建pandas数据框

我想知道是否有一个简单的方法可以从一个numpy数组列表中生成一个pandas DataFrame,其中列是数组.默认行为似乎让数组成为行,我完全不明白为什么.这是一个简单的例子:

names = ['data1', 'data2', 'data3']
data = [np.arange(10) for _ in names]
df = pd.DataFrame(data=data, columns=names)
Run Code Online (Sandbox Code Playgroud)

这给出了一个错误,表明pandas需要10列.

如果我做

df = pd.DataFrame(data=data)
Run Code Online (Sandbox Code Playgroud)

我得到一个包含10列和3行的DataFrame.

鉴于将行附加到DataFrame的行通常要困难得多,我想知道这种行为,例如,假设我很快就想将第4个数据数组放入DataFrame中我希望将数据组织成列来做

df['data4'] = new_array
Run Code Online (Sandbox Code Playgroud)

如何快速构建我想要的DataFrame?

python dataframe pandas

9
推荐指数
1
解决办法
1万
查看次数

不能将标量值用作数组

我正在尝试这段代码:

$rescntryvals[] = $rescntry;
$rescntry = "";
$resclkvalscntry[] = $rclick;
$rclick = "";
$resclkaddsnm[] = $addsnmame;
$addsnmame = "";
Run Code Online (Sandbox Code Playgroud)

但我明白了:

警告:不能将标量值用作数组

为什么?什么是解决方案?

php

8
推荐指数
2
解决办法
2万
查看次数

使用d3获取鼠标点击svg的坐标

我想在矩形svg上点击鼠标的坐标.我正在尝试将鼠标单击坐标打印到控制台.

我可以使用pageXpageY获取坐标,但这是整个页面.我只需要svg里面的坐标.

我正在使用 d3.v3.min.js

所以我尝试过:

$(document).mousedown(function () {
     console.log(d3.mouse(this));
});
Run Code Online (Sandbox Code Playgroud)

我收到错误:

未捕获的TypeError:无法读取null的属性'sourceEvent'

我也尝试过:

$(document).mousedown(function () {
     console.log(d3.mouse(document.getElementById("svg_id")));
});
Run Code Online (Sandbox Code Playgroud)

我犯了同样的错误.

当我尝试时d3.svg.mouse(this),我得到错误:

未捕获的TypeError:undefined不是函数

如何获取svg中的点击坐标以及为什么这些d3.mouse()功能不起作用?

javascript jquery svg d3.js

8
推荐指数
1
解决办法
9587
查看次数

Numpy.where函数找不到数组中的值...任何人都知道为什么?

我一直在尝试使用python的numpy.where函数来确定特定值的位置,但由于某种原因,它错误地确定False了实际找到值的位置.从而返回一个空数组.见下文:

>>>lbpoly=numpy.array([ 5.45  5.5   5.55  5.6   5.65  5.7   5.75  5.8   5.85  5.9   5.95  6.
6.05  6.1   6.15  6.2   6.25  6.3   6.35  6.4   6.45  6.5   6.55  6.6
6.65  6.7   6.75  6.8   6.85  6.9   6.95  7.  ])

>>>cpah=numpy.where(lbpoly==6.2)

>>>print cpah

>>>(array([], dtype=int32),)
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么会这样?我尝试了许多不同的变体,甚至使用<>逻辑.但这会产生2个值的指数.

python arrays numpy where

8
推荐指数
1
解决办法
437
查看次数

将pandas系列列表转换为dataframe

我有一系列的清单

import pandas as pd
s = pd.Series([[1, 2, 3], [4, 5, 6]])
Run Code Online (Sandbox Code Playgroud)

我想要一个DataFrame,每列都有一个列表.

没有from_items,from_records,DataFrame Series.to_frame似乎工作.

这该怎么做?

python dataframe pandas

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