小编Mah*_*hdi的帖子

将闭合曲线拟合到一组点

我有一组pts形成循环的点,它看起来像这样:

在此输入图像描述

这有点类似于31243002,但是我不想在点对之间放置点,而是想在点之间插入一条平滑的曲线(坐标在问题的末尾给出),所以我尝试了类似于Interpolation的scipy文档.:

values = pts
tck = interpolate.splrep(values[:,0], values[:,1], s=1)
xnew = np.arange(2,7,0.01)
ynew = interpolate.splev(xnew, tck, der=0)
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

ValueError:输入数据错误

有没有办法找到这样的合适?

点数的坐标:

pts = array([[ 6.55525 ,  3.05472 ],
   [ 6.17284 ,  2.802609],
   [ 5.53946 ,  2.649209],
   [ 4.93053 ,  2.444444],
   [ 4.32544 ,  2.318749],
   [ 3.90982 ,  2.2875  ],
   [ 3.51294 ,  2.221875],
   [ 3.09107 ,  2.29375 ],
   [ 2.64013 ,  2.4375  ],
   [ 2.275444,  2.653124],
   [ 2.137945,  3.26562 ],
   [ 2.15982 …
Run Code Online (Sandbox Code Playgroud)

python numpy curve-fitting scipy data-fitting

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

在Numpy中从数组中创建对列表的有效方法

我有一个整数的numpy数组x(有(n,4)形状),如:

[[0 1 2 3],
[1 2 7 9],
[2 1 5 2],
...]
Run Code Online (Sandbox Code Playgroud)

我想将数组转换为一对数组:

[0,1]
[0,2]
[0,3]
[1,2]
...
Run Code Online (Sandbox Code Playgroud)

所以第一个元素与同一个子数组中的其他元素成对.我已经有了一个for-loop解决方案:

y=np.array([[x[j,0],x[j,i]] for i in range(1,4) for j in range(0,n)],dtype=int)
Run Code Online (Sandbox Code Playgroud)

但由于在numpy数组上循环效率不高,我尝试slicing了解决方案.我可以为每列进行切片:

y[1]=np.array([x[:,0],x[:,1]]).T
# [[0,1],[1,2],[2,1],...] 
Run Code Online (Sandbox Code Playgroud)

我可以为所有列重复此操作.我的问题是:

  1. 我怎样才能添加y[2]y[1]...使得形状是(N,2)
  2. 如果列数不小(在本例中4),我怎样才能找到y[i]优雅的?
  3. 有哪些替代方法可以实现最终阵列?

python arrays numpy scipy

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

Pandas DataFrame列的布尔掩码

我的目标是使用布尔掩码从DataFrame获取有用的列.

我尝试这样的代码片段:

df = pd.DataFrame({'a': [1,2,3,4,5], 'b': [101, 101, 102, 101, 102], 'c': [23, 12, 54, 65, 21]})
mask = [True, False, True]
df.columns[mask]
Run Code Online (Sandbox Code Playgroud)

结果就是我真正需要的:

Index([u'a', u'c'], dtype='object')
Run Code Online (Sandbox Code Playgroud)

然后我尝试相同的代码,但使用另一个掩码:

mask_i = [1, 0, 1]

df = pd.DataFrame({'a': [1,2,3,4,5], 'b': [101, 101, 102, 101, 102], 'c': [23, 12, 54, 65, 21]})
mask_i = [1, 0, 1]
df.columns[mask]
Run Code Online (Sandbox Code Playgroud)

我期望相同的结果,但得到所有索引:

Index([u'b', u'a', u'b'], dtype='object')
Run Code Online (Sandbox Code Playgroud)

然后我检查:

mask_i = [1, 0, 1]
mask = [True, False, True]
print mask == mask_i`

# Result: `True`
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么面具是平等但我得到不同的结果.

python boolean dataframe pandas

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