小编MyC*_*rta的帖子

IPython笔记本交互功能:如何设置滑块范围

我在Ipython笔记本中编写了下面的代码来生成由参数a控制的sigmoid函数,参数a定义了sigmoid中心的位置,b定义了它的宽度:

%matplotlib inline
    import numpy as np
    import matplotlib.pyplot as plt

def sigmoid(x,a,b):
    #sigmoid function with parameters a = center; b = width
    s= 1/(1+np.exp(-(x-a)/b))
    return 100.0*(s-min(s))/(max(s)-min(s)) # normalize sigmoid to 0-100

x = np.linspace(0,10,256)
sigm = sigmoid(x, a=5, b=1)
fig = plt.figure(figsize=(24,6))
ax1 = fig.add_subplot(2, 1, 1)
ax1.set_xticks([])
ax1.set_xticks([])
plt.plot(x,sigm,lw=2,color='black')
plt.xlim(x.min(), x.max())
Run Code Online (Sandbox Code Playgroud)

我想为参数a和b添加交互性,所以我重新编写了如下函数:

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
from IPython.html.widgets import interactive
from IPython.display import display

def sigmoid_demo(a=5,b=1):
    x = np.linspace(0,10,256)
    s = 1/(1+np.exp(-(x-a)/(b+0.1))) …
Run Code Online (Sandbox Code Playgroud)

python interactive widget slider ipython-notebook

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

matplotlib 创建没有框架、轴的图形,使用颜色图绘制 2D 数组,将绘图保存到与输入大小相同的 numpy 数组

我为此目的编写了一个函数:

  1. 创建matplotlib图形,但不显示它
  2. 没有框架、轴等
  3. 使用用户传递的颜色图在图中绘制输入二维数组
  4. 将颜色映射的二维数组从画布保存到numpy数组
  5. 输出数组的大小应与输入数组的大小相同

对于类似于第 1-2 点或第 4 点的任务,有很多问题和答案;对我来说,自动化第 5 点也很重要。因此,我首先将 @joe-kington 的答案和 @matehat 的答案和评论中的部分结合起来,并进行了一些小的修改,我得到了:

def mk_cmapped_data(data, mpl_cmap_name):
    
    # This is to define figure & ouptput dimensions from input
    r, c = data.shape
    dpi = 72
    w = round(c/dpi, 2)
    h = round(r/dpi, 2)    
    
    # This part modified from @matehat's SO answer: 
    # /sf/answers/575322121/
    fig = plt.figure(frameon=False)
    fig.set_size_inches((w, h)) 
    ax = plt.Axes(fig, [0., 0., 1., 1.])
    ax.set_axis_off()
    fig.add_axes(ax)
    plt.set_cmap(mpl_cmap_name)
    ax.imshow(data, …
Run Code Online (Sandbox Code Playgroud)

python numpy colors matplotlib

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

当列表的长度未知时,汇总Python列表中的前2个元素

我正在编写来自codingbat.com的以下Python列表练习:

给定一个int数组,返回数组中前两个元素的总和.如果数组长度小于2,则只需总结存在的元素,如果数组长度为0,则返回0.示例:

sum2([1, 2, 3]) ? 3 

sum2([1, 1]) ? 2

sum2([1, 1, 1, 1]) ? 2
Run Code Online (Sandbox Code Playgroud)

我的解决方案有效:

def sum2(nums):
  if len(nums)>=2:
    return nums[0] + nums[1]
  elif len(nums)==1:
    return nums[0]
  return 0
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有任何方法可以用更少的条件语句来解决问题.

python arrays sum list conditional-statements

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

如果Python for循环中的条件加倍

我正在进行一项python 练习,询问:

# Return True if the string "cat" and "dog" appear the same number of
# times in the given string. 
# cat_dog('catdog') ? True
# cat_dog('catcat') ? False
# cat_dog('1cat1cadodog') ? True
Run Code Online (Sandbox Code Playgroud)

这是我目前的代码:

def cat_dog(str):
   c=0
   d=0
   for i in range(len(str)-2):
     if str[i:i+3]=="cat":
       c=+1
     if str[i:i+3]=="dog":
       d=+1
   return (c-d)==0.0
Run Code Online (Sandbox Code Playgroud)

我看着它,我认为它应该工作,但它失败了一些测试,这告诉我,我不理解Python逻辑如何工作.关于为什么我的解决方案不起作用的任何解释都会很棒.这些都是测试结果:

cat_dog('catdog') ? True            True          OK        
cat_dog('catcat') ? False           False         OK        
cat_dog('1cat1cadodog') ? True      True          OK        
cat_dog('catxxdogxxxdog') ? False   True          X     
cat_dog('catxdogxdogxcat') ? True   True          OK            
cat_dog('catxdogxdogxca') ? …
Run Code Online (Sandbox Code Playgroud)

python for-loop if-statement

0
推荐指数
2
解决办法
343
查看次数