精华内容
下载资源
问答
  • 在主回路的底部,我看到了这条线result = result()但我不知道它能做什么,我甚至不能用谷歌搜索它。这是什么?下面的代码从task.py和project.py导入。但这两个文件都没有任何与result()相关的内容,因此这里不包括它们。...

    在主回路的底部,我看到了这条线

    result = result()

    但我不知道它能做什么,我甚至不能用谷歌搜索它。

    这是什么?

    下面的代码从task.py和project.py导入。但这两个文件都没有任何与result()相关的内容,因此这里不包括它们。

    #!/usr/bin/env python3

    from task import Task

    from project import Project

    main_menu = {

    'title': 'MAIN MENU',

    'items': ['1. Create a project', '2. Load a project', '3. Quit'],

    'actions': {

    '3': exit,

    }

    }

    project_menu = {

    'title': 'PROJECT MENU',

    'items': ['1. Add a task', '2. Add task dependency', '3. Set task progress',

    '4. Show project', '5. Back to Main Menu'],

    'actions': {

    '5': main_menu,

    }

    }

    def select_menu(menu):

    while True:

    print()

    print(menu['title']) #MAIN MENU

    print('\n'.join(menu['items'])) #1. create project, 2. load project ..

    selection = input('Select > ')

    next_action = menu['actions'].get(selection)

    #print(selection, menu['actions'])

    if next_action:

    return next_action

    else:

    print('\nPlease select from the menu')

    def create_project():

    global cur_project

    global project_menu

    project_name = input('Enter the project name: ')

    cur_project = Project(project_name)

    return project_menu

    main_menu['actions']['1'] = create_project

    cur_menu = main_menu

    cur_project = None

    while True:

    result = select_menu(cur_menu)

    while callable(result):

    result = result()

    cur_menu = result

    展开全文
  • <p>I'm currently working on a project that requires me look at someone elses code, i'm still new to some of this stuff and there is something that I dont quite understand so was hoping someone could ...
  • 1. 什么是 Side Project Side Project 对应的中文是副业、业余项目或小项目的意思。 其实大家目前接触到的很多成熟的商业项目都是从一些 Side Project 通过不断的迭代与持续地优化而来的。 比如大家常用...

    截图

    此系列文章我们开始聊一些软件开发人员如何开始动手写一些自己项目(Side Project)的思路与方法,以及过程中可能需要准备的知识,并分享一些相关的资源给大家。

    1. 什么是 Side Project

    Side Project 对应的中文是副业、业余项目或小项目的意思。
    其实大家目前接触到的很多成熟的商业项目都是从一些 Side Project 通过不断的迭代与持续地优化而来的。
    比如大家常用来发表文章的简书,就是用一个 Side Project 发展而来的。

    简书团队在做简书之前,主业是做一款面向小型团队的协作软件,后来林立发现互联网上还没有支持 Markdown 的在线笔记本,就自己设计了一款,然后让公司新来的一个实习生去编程实现,这就是简书的原型。2012 年 9 月简书团队放弃了之前已投入 2 年多的产品,把简书项目扶正,最终凭借简书这个 Side Project 帮公司完成了新生。

    而对于我们个人而言,也可以通过充分利用自己的闲暇时间以及目前极其方便的互联网,通过资源协作完成一些自己的 Side Project。
    其实我经常在我们的知识星球的微信群里鼓励大家多多动手写自己的项目。

    截图

    自己动手做一些 Side Project 可以获得非常多的益处。

    1. 是将你掌握的知识展示出来的最好的方式;
    2. 是最好的利用你的闲暇时间的方式;
    3. 坚持孵化一段时间后,就可以是你简历中非常有价值的加分项,特别是对于应届毕业的朋友;
    4. 如果后期要创业,你肯定会从你的 Side Project 开始做起;
    5. 你还可以进一步研究 Side Project 的盈利模式,实现项目的盈利。

    注意,你所在的公司的地位常常可能会给你错觉,以为那就代表了你的地位。其实只有你自己的项目才是你最好的代表,也是最好的证明。

    2. 哪里寻找 Side Project 的灵感

    做 Side Project 最好的方式就是你从身边的小需求做起,从大家抱怨的地方寻找机会,别人抱怨不方便、不舒服的地方都是你寻找需求的地方。

    比如打车不方便有了滴滴,外卖不方便有了美团,物流时效有问题有了顺丰等等,当然我们也不是从一开始就做这么大需求的项目,可以就从非常小的需求做起,去满足需求,用一种极致的精神去满足需求。

    如果你实在没有什么项目灵感,或者想寻找一些东西激发一下你的灵感,下面我给大家推荐两个好的寻找创业项目灵感的站点。

    2.1 IT桔子

    网址:https://www.itjuzi.com/

    IT桔子(itjuzi.com)是泛TMT领域的创业投资数据库和商业信息服务提供商,致力于打造IT互联网企业以及投资机构的投融资数据库,为投资人、创业者或者企业提供最新项目、投资收购新闻、行业调研、商务线索、国外项目等服务的信息数据服务商。

    你可以在里面寻找到一些最新的创业公司以及他们的孵化项目,帮助你挖掘出一些创业项目需求。

    截图

    2.2 Product Hunt

    网址:https://www.producthunt.com/

    Product Hunt 是一个供用户分享和发现新产品的网站。你可以提交自己或者别人的新作品,网站会按照当天各产品获得票数降序显示。

    应该是全球最大的创新、创业项目发布站点了,每天都有很多新奇的项目、奇特的需求,非常值得大家去上面每天浏览,上面很多都是软件工程师发布的 Side Project。

    截图

    下一篇文章我们继续聊聊如果大家已经确认好了项目的需求以及方向,那么我们如何快速地开始项目的推进呢?


    DevOpen.Club Pro 高质量软件开发分享讨论群,汇聚了近 1000 名各行各业的软件开发人员,供朋友们分享高质量资源、讨论软件开发问题解决方案的社群。
    任何技术都不是限制,我们最终目的是将技术转化成收入,实现财务自由。
    微信群里已成功孵化出多款创业项目、Side Project 以及已经上线运营的项目。

    展开全文
  • 假设工程根目录为 d:/Project/然后在 d:/Project/a/b/c/d/file.py 里使用 os.getcwd() 方法获取的是d:/Project/a/b/c/d现在我想获取 d:/Project 怎么?------------------------------------分割线----------------...

    假设工程根目录为 d:/Project/

    然后在 d:/Project/a/b/c/d/file.py 里使用 os.getcwd() 方法获取的是

    d:/Project/a/b/c/d

    现在我想获取 d:/Project 怎么做?

    ------------------------------------分割线---------------------------------

    谢谢大家的热情回答,都怪我没有将问题说清楚,我的意思是获取当前工程的根目录,而获取根目录的函数可能在任何目录下

    根目录既可能是 d:/Project/

    也可能是 d:/Python/Project/

    也可能是 d:/balabala/Python/Project/

    因此逐级往上也是不可能找到的,我目前的方法是在根目录下放一个文件 file

    然后这样:

    def getSeparator():

    if 'Windows' in platform.system():

    separator = '\\'

    else:

    separator = '/'

    return separator

    def findPath(file):

    o_path = os.getcwd()

    separator = getSeparator()

    str = o_path

    str = str.split(separator)

    while len(str) > 0:

    spath = separator.join(str)+separator+file

    leng = len(str)

    if os.path.exists(spath):

    return spath

    str.remove(str[leng-1])

    但是这样也有一个问题,就是必须保证任何目录下不能有和根目录下file重名的文件

    展开全文
  • 和鲸社区https://www.kesci.com/home/project/59f29f67c5f3f5119527a2ccNumpy是Python数据分析所必须要掌握的基础库之一。以下为入门Numpy的100题小练习,原为github上的开源项目,由和鲸社区的小科翻译并整理...

    和鲸社区

    https://www.kesci.com/home/project/59f29f67c5f3f5119527a2cc

    Numpy是Python做数据分析所必须要掌握的基础库之一。以下为入门Numpy的100题小练习,原为github上的开源项目,由和鲸社区的小科翻译并整理(保留了部分原文作为参考)。受限于篇幅,小编在这里只提供了部分题目的运行结果。友情提示:代码虽好,自己动手才算学到。

    1. 导入numpy库并简写为 np (★☆☆)

    (提示: import … as …)

    import numpy as np

    2. 打印numpy的版本和配置说明 (★☆☆)

    (提示: np.version, np.show_config)

    print(np.__version__)
    np.show_config()

    3. 创建一个长度为10的空向量 (★☆☆)

    (提示: np.zeros)

    Z = np.zeros(10)
    print(Z)

    4. 如何找到任何一个数组的内存大小?(★☆☆)

    (提示: size, itemsize)

    Z = np.zeros((10,10))
    print("%d bytes" % (Z.size * Z.itemsize))

    5. 如何从命令行得到numpy中add函数的说明文档? (★☆☆)

    (提示: np.info)

    numpy.info(numpy.add)

    add(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])

    6. 创建一个长度为10并且除了第五个值为1的空向量 (★☆☆)

    (提示: array[4])

    Z = np.zeros(10)
    Z[4] = 1
    print(Z)

    7. 创建一个值域范围从10到49的向量(★☆☆)

    (提示: np.arange)

    Z = np.arange(10,50)
    print(Z)

    8. 反转一个向量(第一个元素变为最后一个) (★☆☆)

    (提示: array[::-1])

    Z = np.arange(50)
    Z = Z[::-1]
    print(Z)

    9. 创建一个 3x3 并且值从0到8的矩阵(★☆☆)

    (提示: reshape)

    Z = np.arange(9).reshape(3,3)
    print(Z)

    10. 找到数组[1,2,0,0,4,0]中非0元素的位置索引 (★☆☆)

    (提示: np.nonzero)

    nz = np.nonzero([1,2,0,0,4,0])
    print(nz)

    11. 创建一个 3x3 的单位矩阵 (★☆☆)

    (提示: np.eye)

    Z = np.eye(3)
    print(Z)

    12. 创建一个 3x3x3的随机数组 (★☆☆)

    (提示: np.random.random)

    Z = np.random.random((3,3,3))
    print(Z)

    13. 创建一个 10x10 的随机数组并找到它的最大值和最小值 (★☆☆)

    (提示: min, max)

    Z = np.random.random((10,10))
    Zmin, Zmax = Z.min(), Z.max()
    print(Zmin, Zmax)

    14. 创建一个长度为30的随机向量并找到它的平均值 (★☆☆)

    (提示: mean)

    Z = np.random.random(30)
    m = Z.mean()
    print(m)

    15. 创建一个二维数组,其中边界值为1,其余值为0 (★☆☆)

    (提示: array[1:-1, 1:-1])

    Z = np.ones((10,10))
    Z[1:-1,1:-1] = 0
    print(Z)

    16. 对于一个存在在数组,如何添加一个用0填充的边界? (★☆☆)

    (提示: np.pad)

    Z = np.ones((5,5))
    Z = np.pad(Z, pad_width=1, mode='constant', constant_values=0)
    print(Z)

    17. 以下表达式运行的结果分别是什么? (★☆☆)

    (提示: NaN = not a number, inf = infinity)

    0 * np.nan
    np.nan == np.nan
    np.inf > np.nan
    np.nan - np.nan
    0.3 == 3 * 0.1

    print(0 * np.nan)
    print(np.nan == np.nan)
    print(np.inf > np.nan)
    print(np.nan - np.nan)
    print(0.3 == 3 * 0.1)

    18. 创建一个 5x5的矩阵,并设置值1,2,3,4落在其对角线下方位置 (★☆☆)

    (提示: np.diag)

    Z = np.diag(1+np.arange(4),k=-1)
    print(Z)

    19. 创建一个8x8 的矩阵,并且设置成棋盘样式 (★☆☆)

    (提示: array[::2])

    Z = np.zeros((8,8),dtype=int)
    Z[1::2,::2] = 1
    Z[::2,1::2] = 1
    print(Z)

    20. 考虑一个 (6,7,8) 形状的数组,其第100个元素的索引(x,y,z)是什么?

    (提示: np.unravel_index)

    print(np.unravel_index(100,(6,7,8)))

    21. 用tile函数去创建一个 8x8的棋盘样式矩阵(★☆☆)

    (提示: np.tile)

    Z = np.tile( np.array([[0,1],[1,0]]), (4,4))
    print(Z)

    22. 对一个5x5的随机矩阵做归一化(★☆☆)

    (提示: (x - min) / (max - min))

    Z = np.random.random((5,5))
    Zmax, Zmin = Z.max(), Z.min()
    Z = (Z - Zmin)/(Zmax - Zmin)
    print(Z)

    23. 创建一个将颜色描述为(RGBA)四个无符号字节的自定义dtype?(★☆☆)

    (提示: np.dtype)

    color = np.dtype([("r", np.ubyte, 1),
                      ("g", np.ubyte, 1),
                      ("b", np.ubyte, 1),
                      ("a", np.ubyte, 1)])
    color

    24. 一个5x3的矩阵与一个3x2的矩阵相乘,实矩阵乘积是什么?(★☆☆)

    (提示: np.dot | @)

    Z = np.dot(np.ones((5,3)), np.ones((3,2)))
    print(Z)

    25. 给定一个一维数组,对其在3到8之间的所有元素取反 (★☆☆)

    (提示: >, <=)

    Z = np.arange(11)
    Z[(3 8
    )] *= -1
    print(Z)

    26. 下面脚本运行后的结果是什么? (★☆☆)

    (提示: np.sum)

    print(sum(range(5),-1))
    from numpy import *
    print(sum(range(5),-1))

    print(sum(range(5),-1))from numpy import *
    print(sum(range(5),-1))

    27. 考虑一个整数向量Z,下列表达合法的是哪个? (★☆☆)

    Z**Z
    2 << Z >> 2
    Z Z

    Z = np.arange(5)
    Z ** Z  # legal

    array([  1,   1,   4,  27, 256])

    Z = np.arange(5)2 <> 2  # false

    array([0, 1, 2, 4, 8])

    Z = np.arange(5)
    Z # legal

    array([False, False, False, False, False])

    Z = np.arange(5)1j*Z   # legal

    array([0.+0.j, 0.+1.j, 0.+2.j, 0.+3.j, 0.+4.j])

    Z = np.arange(5)
    Z/1/1   # legal

    array([0., 1., 2., 3., 4.])

    Z = np.arange(5)
    ZZ    # false

    ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

    28. 下列表达式的结果分别是什么?(★☆☆)

    np.array(0) / np.array(0)
    np.array(0) // np.array(0)
    np.array([np.nan]).astype(int).astype(float)

    print(np.array(0) / np.array(0))
    print(np.array(0) // np.array(0))
    print(np.array([np.nan]).astype(int).astype(float))

    29. 如何从零位对浮点数组做舍入 ? (★☆☆)

    (提示: np.uniform, np.copysign, np.ceil, np.abs)

    Z = np.random.uniform(-10,+10,10)print (np.copysign(np.ceil(np.abs(Z)), Z))

    30. 如何找到两个数组中的共同元素? (★☆☆)

    (提示: np.intersect1d)

    Z1 = np.random.randint(0,10,10)
    Z2 = np.random.randint(0,10,10)
    print(np.intersect1d(Z1,Z2))

    31. 如何忽略所有的 numpy 警告(尽管不建议这么做)? (★☆☆)

    (提示: np.seterr, np.errstate)

    # Suicide mode on
    defaults = np.seterr(all="ignore")
    Z = np.ones(1) / 0# Back to sanity
    _ = np.seterr(**defaults)

    An equivalent way, with a context manager:

    with np.errstate(divide='ignore'):
        Z = np.ones(1) / 0

    32. 下面的表达式是正确的吗? (★☆☆)

    (提示: imaginary number)

    np.sqrt(-1) == np.emath.sqrt(-1)

    np.sqrt(-1) == np.emath.sqrt(-1)  

    False

    33. 如何得到昨天,今天,明天的日期? (★☆☆)

    (提示: np.datetime64, np.timedelta64)

    yesterday = np.datetime64('today''D') - np.timedelta64(1'D')
    today     = np.datetime64('today''D')
    tomorrow  = np.datetime64('today''D') + np.timedelta64(1'D')print ("Yesterday is " + str(yesterday))print ("Today is " + str(today))print ("Tomorrow is "+ str(tomorrow))

    34. 如何得到所有与2016年7月对应的日期?(★★☆)

    (提示: np.arange(dtype=datetime64['D']))

    Z = np.arange('2016-07''2016-08', dtype='datetime64[D]')
    print(Z)

    35. 如何直接在位计算(A+B)*(-A/2)(不建立副本)? (★★☆)

    (提示: np.add(out=), np.negative(out=), np.multiply(out=), np.divide(out=))

    A = np.ones(3)*1
    B = np.ones(3)*2
    C = np.ones(3)*3
    np.add(A,B,out=B)
    np.divide(A,2,out=A)
    np.negative(A,out=A)
    np.multiply(A,B,out=A)

    array([-1.5, -1.5, -1.5])

    36. 用五种不同的方法去提取一个随机数组的整数部分(★★☆)

    (提示: %, np.floor, np.ceil, astype, np.trunc)

    Z = np.random.uniform(0,10,10)print (Z - Z%1)print (np.floor(Z))print (np.ceil(Z)-1)print (Z.astype(int))print (np.trunc(Z))

    37. 创建一个5x5的矩阵,其中每行的数值范围从0到4 (★★☆)

    (提示: np.arange)

    Z = np.zeros((5,5))
    Z += np.arange(5)print (Z)

    38. 通过考虑一个可生成10个整数的函数,来构建一个数组(★☆☆)

    (提示: np.fromiter)

    def generate():for x in range(10):yield x
    Z = np.fromiter(generate(),dtype=float,count=-1)print (Z)

    [0. 1. 2. 3. 4. 5. 6. 7. 8. 9.]

    39. 创建一个长度为10的随机向量,其值域范围从0到1,但是不包括0和1 (★★☆)

    (提示: np.linspace)

    Z = np.linspace(0,1,11,endpoint=False)[1:]print (Z)

    40. 创建一个长度为10的随机向量,并将其排序 (★★☆)

    (提示: sort)

    Z = np.random.random(10)
    Z.sort()print (Z)

    41.对于一个小数组,如何用比 np.sum更快的方式对其求和?(★★☆)

    (提示: np.add.reduce)

    Z = np.arange(10)
    np.add.reduce(Z)

    42. 对于两个随机数组A和B,检查它们是否相等(★★☆)

    (提示: np.allclose, np.array_equal)

    A = np.random.randint(0,2,5)
    B = np.random.randint(0,2,5)# Assuming identical shape of the arrays and a tolerance for the comparison of values
    equal = np.allclose(A,B)
    print(equal)

    False

    # 方法2# Checking both the shape and the element values, no tolerance (values have to be exactly equal)
    equal = np.array_equal(A,B)
    print(equal)

    False

    43. 创建一个只读数组(read-only) (★★☆)

    (提示: flags.writeable)

    # 使用如下过程实现
    Z = np.zeros(10)
    Z.flags.writeable = False
    Z[0] = 1

    44. 将笛卡尔坐标下的一个10x2的矩阵转换为极坐标形式(★★☆)

    (hint: np.sqrt, np.arctan2)

    Z = np.random.random((10,2))
    X,Y = Z[:,0], Z[:,1]
    R = np.sqrt(X**2+Y**2)
    T = np.arctan2(Y,X)print (R)print (T)

    45. 创建一个长度为10的向量,并将向量中最大值替换为1 (★★☆)

    (提示: argmax)

    Z = np.random.random(10)
    Z[Z.argmax()] = 0print (Z)

    46. 创建一个结构化数组,并实现 x 和 y 坐标覆盖 [0,1]x[0,1] 区域 (★★☆)

    (提示: np.meshgrid)

    Z = np.zeros((5,5), [('x',float),('y',float)])
    Z['x'], Z['y'] = np.meshgrid(np.linspace(0,1,5),
                                 np.linspace(0,1,5))
    print(Z)

    47. 给定两个数组X和Y,构造Cauchy矩阵C (Cij =1/(xi - yj))

    (提示: np.subtract.outer)

    X = np.arange(8)
    Y = X + 0.5
    C = 1.0 / np.subtract.outer(X, Y)
    print(np.linalg.det(C))

    48. 打印每个numpy标量类型的最小值和最大值?(★★☆)

    (提示: np.iinfo, np.finfo, eps)

    for dtype in [np.int8, np.int32, np.int64]:
        print(np.iinfo(dtype).min)
        print(np.iinfo(dtype).max)for dtype in [np.float32, np.float64]:
        print(np.finfo(dtype).min)
        print(np.finfo(dtype).max)
        print(np.finfo(dtype).eps)

    49. 如何打印一个数组中的所有数值? (★★☆)

    (提示: np.set_printoptions)

    np.set_printoptions(threshold=np.nan)
    Z = np.zeros((16,16))print (Z)

    50. 给定标量时,如何找到数组中最接近标量的值?(★★☆)

    (提示: argmin)

    Z = np.arange(100)
    v = np.random.uniform(0,100)
    index = (np.abs(Z-v)).argmin()print (Z[index])

    51. 创建一个表示位置(x,y)和颜色(r,g,b)的结构化数组(★★☆)

    (提示: dtype)

    Z = np.zeros(10, [ ('position', [ ('x', float, 1),
                                      ('y', float, 1)]),
                       ('color',    [ ('r', float, 1),
                                      ('g', float, 1),
                                      ('b', float, 1)])])print (Z)

    52. 对一个表示坐标形状为(100,2)的随机向量,找到点与点的距离(★★☆)

    (提示: np.atleast_2d, T, np.sqrt)

    Z = np.random.random((10,2))
    X,Y = np.atleast_2d(Z[:,0], Z[:,1])
    D = np.sqrt( (X-X.T)**2 + (Y-Y.T)**2)print (D)
    # 方法2# Much faster with scipyimport scipy# Thanks Gavin Heverly-Coulson (#issue 1)import scipy.spatial
    D = scipy.spatial.distance.cdist(Z,Z)print (D)

    53. 如何将32位的浮点数(float)转换为对应的整数(integer)?

    (提示: astype(copy=False))

    Z = np.arange(10, dtype=np.int32)
    Z = Z.astype(np.float32, copy=False)print (Z)

    54. 如何读取以下文件? (★★☆)

    (提示: np.genfromtxt)

    123456,  ,  , 78
     ,  , 9,10,11

    参考链接:https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.genfromtxt.html

    55. 对于numpy数组,enumerate的等价操作是什么?(★★☆)

    (提示: np.ndenumerate, np.ndindex)

    Z = np.arange(9).reshape(3,3)for index, value in np.ndenumerate(Z):print (index, value)for index in np.ndindex(Z.shape):print (index, Z[index])

    56. 生成一个通用的二维Gaussian-like数组 (★★☆)

    (提示: np.meshgrid, np.exp)

    X, Y = np.meshgrid(np.linspace(-1,1,10), np.linspace(-1,1,10))
    D = np.sqrt(X*X+Y*Y)
    sigma, mu = 1.00.0
    G = np.exp(-( (D-mu)**2 / ( 2.0 * sigma**2 ) ) )print (G)

    57. 对一个二维数组,如何在其内部随机放置p个元素? (★★☆)

    (提示: np.put, np.random.choice)

    n = 10
    p = 3
    Z = np.zeros((n,n))
    np.put(Z, np.random.choice(range(n*n), p, replace=False),1)print (Z)

    58. 减去一个矩阵中的每一行的平均值 (★★☆)

    (提示: mean(axis=,keepdims=))

    X = np.random.rand(510)# Recent versions of numpy
    Y = X - X.mean(axis=1, keepdims=True)
    print(Y)
    # 方法2# Older versions of numpy
    Y = X - X.mean(axis=1).reshape(-11)print (Y)

    59. 如何通过第n列对一个数组进行排序? (★★☆)

    (提示: argsort)

    Z = np.random.randint(0,10,(3,3))print (Z)print (Z[Z[:,1].argsort()])

    60. 如何检查一个二维数组是否有空列?(★★☆)

    (提示: any, ~)

    Z = np.random.randint(0,3,(3,10))print ((~Z.any(axis=0)).any())

    True

    61. 从数组中的给定值中找出最近的值 (★★☆)

    (提示: np.abs, argmin, flat)

    Z = np.random.uniform(0,1,10)
    z = 0.5
    m = Z.flat[np.abs(Z - z).argmin()]print (m)

    0.5531249196891759

    62. 如何用迭代器(iterator)计算两个分别具有形状(1,3)和(3,1)的数组? (★★☆)

    (提示: np.nditer)

    A = np.arange(3).reshape(3,1)
    B = np.arange(3).reshape(1,3)
    it = np.nditer([A,B,None])for x,y,z in it: 
        z[...] = x + yprint (it.operands[2])

    63. 创建一个具有name属性的数组类(★★☆)

    (提示: class方法)

    class NamedArray(np.ndarray):def __new__(cls, array, name="no name"):
            obj = np.asarray(array).view(cls)
            obj.name = namereturn objdef __array_finalize__(self, obj):if obj is Nonereturn
            self.info = getattr(obj, 'name'"no name")
    Z = NamedArray(np.arange(10), "range_10")print (Z.name)

    range_10

    64. 考虑一个给定的向量,如何对由第二个向量索引的每个元素加1(小心重复的索引)? (★★★)

    (提示: np.bincount | np.add.at)

    Z = np.ones(10)
    I = np.random.randint(0,len(Z),20)
    Z += np.bincount(I, minlength=len(Z))
    print(Z)

    [3. 1. 5. 4. 3. 4. 2. 1. 4. 3.]

    # 方法2
    np.add.at(Z, I, 1)
    print(Z)

    [5. 1. 9. 7. 5. 7. 3. 1. 7. 5.]

    65. 根据索引列表(I),如何将向量(X)的元素累加到数组(F)? (★★★)

    (提示: np.bincount)

    X = [1,2,3,4,5,6]
    I = [1,3,9,3,4,1]
    F = np.bincount(I,X)print (F)

    [0. 7. 0. 6. 5. 0. 0. 0. 0. 3.]

    66. 考虑一个(dtype=ubyte) 的 (w,h,3)图像,计算其唯一颜色的数量(★★★)

    (提示: np.unique)

    w,h = 16,16
    I = np.random.randint(0,2,(h,w,3)).astype(np.ubyte)#Note that we should compute 256*256 first. #Otherwise numpy will only promote F.dtype to 'uint16' and overfolw will occur
    F = I[...,0]*(256*256) + I[...,1]*256 +I[...,2]
    n = len(np.unique(F))print (n)

    8

    67. 考虑一个四维数组,如何一次性计算出最后两个轴(axis)的和?(★★★)

    (提示: sum(axis=(-2,-1)))

    A = np.random.randint(0,10,(3,4,3,4))# solution by passing a tuple of axes (introduced in numpy 1.7.0)
    sum = A.sum(axis=(-2,-1))print (sum)# 方法2
    sum = A.reshape(A.shape[:-2] + (-1,)).sum(axis=-1)print (sum)

    68. 考虑一个一维向量D,如何使用相同大小的向量S来计算D子集的均值?(★★★)

    (提示: np.bincount)

    D = np.random.uniform(0,1,100)
    S = np.random.randint(0,10,100)
    D_sums = np.bincount(S, weights=D)
    D_counts = np.bincount(S)
    D_means = D_sums / D_countsprint (D_means)
    # 方法2import pandas as pd
    print(pd.Series(D).groupby(S).mean())

    69. 如何获得点积 dot prodcut的对角线? (★★★)

    (提示: np.diag)

    A = np.random.uniform(0,1,(5,5))
    B = np.random.uniform(0,1,(5,5))# slow version
    np.diag(np.dot(A, B))# 方法2# Fast version
    np.sum(A * B.T, axis=1)# 方法3# Faster version
    np.einsum("ij,ji->i", A, B)

    70. 考虑一个向量[1,2,3,4,5],如何建立一个新的向量,在这个新向量中每个值之间有3个连续的零?(★★★)

    (提示: array[::4])

    Z = np.array([1,2,3,4,5])
    nz = 3
    Z0 = np.zeros(len(Z) + (len(Z)-1)*(nz))
    Z0[::nz+1] = Zprint (Z0)

    [1. 0. 0. 0. 2. 0. 0. 0. 3. 0. 0. 0. 4. 0. 0. 0. 5.]

    71. 考虑一个维度(5,5,3)的数组,如何将其与一个(5,5)的数组相乘?(★★★)

    (提示: array[:, :, None])

    A = np.ones((5,5,3))
    B = 2*np.ones((5,5))print (A * B[:,:,None])

    72. 如何对一个数组中任意两行做交换? (★★★)

    (提示: array[[]] = array[[]])

    A = np.arange(25).reshape(5,5)
    A[[0,1]] = A[[1,0]]print (A)

    73. 考虑一个可以描述10个三角形的triplets,找到可以分割全部三角形的line segment

    Consider a set of 10 triplets describing 10 triangles (with shared vertices), find the set of unique line segments composing all the triangles (★★★)
    (提示: repeat, np.roll, np.sort, view, np.unique)

    faces = np.random.randint(0,100,(10,3))
    F = np.roll(faces.repeat(2,axis=1),-1,axis=1)
    F = F.reshape(len(F)*3,2)
    F = np.sort(F,axis=1)
    G = F.view( dtype=[('p0',F.dtype),('p1',F.dtype)] )
    G = np.unique(G)print (G)

    74. 给定一个二进制的数组C,如何产生一个数组A满足np.bincount(A)==C(★★★)

    (提示: np.repeat)

    C = np.bincount([1,1,2,3,4,4,6])
    A = np.repeat(np.arange(len(C)), C)print (A)

    [1 1 2 3 4 4 6]

    75. 如何通过滑动窗口计算一个数组的平均数? (★★★)

    (提示: np.cumsum)

    def moving_average(a, n=3) :
        ret = np.cumsum(a, dtype=float)
        ret[n:] = ret[n:] - ret[:-n]return ret[n - 1:] / n
    Z = np.arange(20)
    print(moving_average(Z, n=3))

    [ 1.  2.  3.  4.  5.  6.  7.  8.  9. 10. 11. 12. 13. 14. 15. 16. 17. 18.]

    76. Consider a one-dimensional array Z, build a two-dimensional array whose first row is (Z[0],Z[1],Z[2]) and each subsequent row is shifted by 1 (last row should be (Z[-3],Z[-2],Z[-1]) (★★★)

    (提示: from numpy.lib import stride_tricks)

    from numpy.lib import stride_tricksdef rolling(a, window):
        shape = (a.size - window + 1, window)
        strides = (a.itemsize, a.itemsize)return stride_tricks.as_strided(a, shape=shape, strides=strides)
    Z = rolling(np.arange(10), 3)print (Z)

    77. 如何对布尔值取反,或者原位(in-place)改变浮点数的符号(sign)?(★★★)

    (提示: np.logical_not, np.negative)

    Z = np.random.randint(0,2,100)
    np.logical_not(Z, out=Z)
    Z = np.random.uniform(-1.0,1.0,100)
    np.negative(Z, out=Z)

    78. 考虑两组点集P0和P1去描述一组线(二维)和一个点p,如何计算点p到每一条线 i (P0[i],P1[i])的距离?(★★★)

    def distance(P0, P1, p):
        T = P1 - P0
        L = (T**2).sum(axis=1)
        U = -((P0[:,0]-p[...,0])*T[:,0] + (P0[:,1]-p[...,1])*T[:,1]) / L
        U = U.reshape(len(U),1)
        D = P0 + U*T - preturn np.sqrt((D**2).sum(axis=1))
    P0 = np.random.uniform(-10,10,(10,2))
    P1 = np.random.uniform(-10,10,(10,2))
    p  = np.random.uniform(-10,10,( 1,2))print (distance(P0, P1, p))

    79.考虑两组点集P0和P1去描述一组线(二维)和一组点集P,如何计算每一个点 j(P[j]) 到每一条线 i (P0[i],P1[i])的距离?(★★★)

    # based on distance function from previous question
    P0 = np.random.uniform(-1010, (10,2))
    P1 = np.random.uniform(-10,10,(10,2))
    p = np.random.uniform(-1010, (10,2))print (np.array([distance(P0,P1,p_i) for p_i in p]))

    80.Consider an arbitrary array, write a function that extract a subpart with a fixed shape and centered on a given element (pad with a fill value when necessary) (★★★)

    (hint: minimum, maximum)

    Z = np.random.randint(0,10,(10,10))
    shape = (5,5)
    fill  = 0
    position = (1,1)
    R = np.ones(shape, dtype=Z.dtype)*fill
    P  = np.array(list(position)).astype(int)
    Rs = np.array(list(R.shape)).astype(int)
    Zs = np.array(list(Z.shape)).astype(int)
    R_start = np.zeros((len(shape),)).astype(int)
    R_stop  = np.array(list(shape)).astype(int)
    Z_start = (P-Rs//2)
    Z_stop  = (P+Rs//2)+Rs%2
    R_start = (R_start - np.minimum(Z_start,0)).tolist()
    Z_start = (np.maximum(Z_start,0)).tolist()
    R_stop = np.maximum(R_start, (R_stop - np.maximum(Z_stop-Zs,0))).tolist()
    Z_stop = (np.minimum(Z_stop,Zs)).tolist()
    r = [slice(start,stop) for start,stop in zip(R_start,R_stop)]
    z = [slice(start,stop) for start,stop in zip(Z_start,Z_stop)]
    R[r] = Z[z]print (Z)print (R)

    81. 考虑一个数组Z = [1,2,3,4,5,6,7,8,9,10,11,12,13,14],如何生成一个数组R = [[1,2,3,4], [2,3,4,5], [3,4,5,6], …,[11,12,13,14]]? (★★★)

    (提示: stride_tricks.as_strided)

    Z = np.arange(1,15,dtype=np.uint32)
    R = stride_tricks.as_strided(Z,(11,4),(4,4))print (R)

    82. 计算一个矩阵的秩(★★★)

    (提示: np.linalg.svd)

    Z = np.random.uniform(0,1,(10,10))
    U, S, V = np.linalg.svd(Z) # Singular Value Decomposition
    rank = np.sum(S > 1e-10)print (rank)

    83. 如何找到一个数组中出现频率最高的值?

    (提示: np.bincount, argmax)

    Z = np.random.randint(0,10,50)print (np.bincount(Z).argmax())

    1

    84. 从一个10x10的矩阵中提取出连续的3x3区块(★★★)

    (提示: stride_tricks.as_strided)

    Z = np.random.randint(0,5,(10,10))
    n = 3
    i = 1 + (Z.shape[0]-3)
    j = 1 + (Z.shape[1]-3)
    C = stride_tricks.as_strided(Z, shape=(i, j, n, n), strides=Z.strides + Z.strides)print (C)

    85. 创建一个满足 Z[i,j] == Z[j,i]的子类 (★★★)

    (提示: class 方法)

    class Symetric(np.ndarray):def __setitem__(self, index, value):
            i,j = index
            super(Symetric, self).__setitem__((i,j), value)
            super(Symetric, self).__setitem__((j,i), value)def symetric(Z):return np.asarray(Z + Z.T - np.diag(Z.diagonal())).view(Symetric)
    S = symetric(np.random.randint(0,10,(5,5)))
    S[2,3] = 42print (S)

    86. 考虑p个 nxn 矩阵和一组形状为(n,1)的向量,如何直接计算p个矩阵的乘积(n,1)?(★★★)

    (提示: np.tensordot)

    p, n = 1020
    M = np.ones((p,n,n))
    V = np.ones((p,n,1))
    S = np.tensordot(M, V, axes=[[02], [01]])print (S)

    87. 对于一个16x16的数组,如何得到一个区域(block-sum)的和(区域大小为4x4)? (★★★)

    (提示: np.add.reduceat)

    Z = np.ones((16,16))
    k = 4
    S = np.add.reduceat(np.add.reduceat(Z, np.arange(0, Z.shape[0], k), axis=0),
                                           np.arange(0, Z.shape[1], k), axis=1)print (S)

    88. 如何利用numpy数组实现Game of Life? (★★★)

    (提示: Game of Life)

    def iterate(Z):# Count neighbours
        N = (Z[0:-2,0:-2] + Z[0:-2,1:-1] + Z[0:-2,2:] +
             Z[1:-1,0:-2]                + Z[1:-1,2:] +
             Z[2:  ,0:-2] + Z[2:  ,1:-1] + Z[2:  ,2:])# Apply rules
        birth = (N==3) & (Z[1:-1,1:-1]==0)
        survive = ((N==2) | (N==3)) & (Z[1:-1,1:-1]==1)
        Z[...] = 0
        Z[1:-1,1:-1][birth | survive] = 1return Z
    Z = np.random.randint(0,2,(50,50))for i in range(100): Z = iterate(Z)print (Z)

    89. 如何找到一个数组的第n个最大值? (★★★)

    (提示: np.argsort | np.argpartition)

    Z = np.arange(10000)
    np.random.shuffle(Z)
    n = 5# Slowprint (Z[np.argsort(Z)[-n:]])

    [9995 9996 9997 9998 9999]

    # 方法2# Fastprint (Z[np.argpartition(-Z,n)[:n]])

    [9999 9997 9998 9996 9995]

    90. 给定任意个数向量,创建笛卡尔积(每一个元素的每一种组合)(★★★)

    (提示: np.indices)

    def cartesian(arrays):
        arrays = [np.asarray(a) for a in arrays]
        shape = (len(x) for x in arrays)
        ix = np.indices(shape, dtype=int)
        ix = ix.reshape(len(arrays), -1).Tfor n, arr in enumerate(arrays):
            ix[:, n] = arrays[n][ix[:, n]]return ixprint (cartesian(([123], [45], [67])))

    91. 如何从一个正常数组创建记录数组(record array)? (★★★)

    (提示: np.core.records.fromarrays)

    Z = np.array([("Hello"2.53),
                  ("World"3.62)])
    R = np.core.records.fromarrays(Z.T, 
                                   names='col1, col2, col3',
                                   formats = 'S8, f8, i8')print (R)

    [(b'Hello', 2.5, 3) (b'World', 3.6, 2)]

    92. 考虑一个大向量Z, 用三种不同的方法计算它的立方(★★★)

    (提示: np.power, *, np.einsum)

    x = np.random.rand()
    np.power(x,3)# 方法2
    x*x*x# 方法3
    np.einsum('i,i,i->i',x,x,x)

    93. 考虑两个形状分别为(8,3) 和(2,2)的数组A和B. 如何在数组A中找到满足包含B中元素的行?(不考虑B中每行元素顺序)?(★★★)

    (提示: np.where)

    A = np.random.randint(0,5,(8,3))
    B = np.random.randint(0,5,(2,2))
    C = (A[..., np.newaxis, np.newaxis] == B)
    rows = np.where(C.any((3,1)).all(1))[0]print (rows)

    [0 1 4 5 6 7]

    94. 考虑一个10x3的矩阵,分解出有不全相同值的行 (如 [2,2,3]) (★★★)

    Z = np.random.randint(0,5,(10,3))print (Z)# solution for arrays of all dtypes (including string arrays and record arrays)
    E = np.all(Z[:,1:] == Z[:,:-1], axis=1)
    U = Z[~E]print (U)
    # 方法2# soluiton for numerical arrays only, will work for any number of columns in Z
    U = Z[Z.max(axis=1) != Z.min(axis=1),:]print (U)

    95. 将一个整数向量转换为matrix binary的表现形式 (★★★)

    (提示: np.unpackbits)

    I = np.array([012315163264128])
    B = ((I.reshape(-1,1) & (2**np.arange(8))) != 0).astype(int)
    print(B[:,::-1])
    # 方法2print (np.unpackbits(I[:, np.newaxis], axis=1))

    96. 给定一个二维数组,如何提取出唯一的(unique)行?(★★★)

    (提示: np.ascontiguousarray)

    Z = np.random.randint(0,2,(6,3))
    T = np.ascontiguousarray(Z).view(np.dtype((np.void, Z.dtype.itemsize * Z.shape[1])))
    _, idx = np.unique(T, return_index=True)
    uZ = Z[idx]print (uZ)

    97. 考虑两个向量A和B,写出用einsum等式对应的inner, outer, sum, mul函数(★★★)

    (提示: np.einsum)

    A = np.random.uniform(0,1,10)
    B = np.random.uniform(0,1,10)print ('sum')print (np.einsum('i->', A))# np.sum(A)print ('A * B')print (np.einsum('i,i->i', A, B)) # A * Bprint ('inner')print (np.einsum('i,i', A, B))    # np.inner(A, B)print ('outer')print (np.einsum('i,j->ij', A, B))    # np.outer(A, B)

    98. 考虑一个由两个向量描述的路径(X,Y),如何用等距样例(equidistant samples)对其进行采样(sample)? (★★★)

    Considering a path described by two vectors (X,Y), how to sample it using equidistant samples
    (提示: np.cumsum, np.interp)

    phi = np.arange(010*np.pi, 0.1)
    a = 1
    x = a*phi*np.cos(phi)
    y = a*phi*np.sin(phi)
    dr = (np.diff(x)**2 + np.diff(y)**2)**.5 # segment lengths
    r = np.zeros_like(x)
    r[1:] = np.cumsum(dr)                # integrate path
    r_int = np.linspace(0, r.max(), 200# regular spaced path
    x_int = np.interp(r_int, r, x)       # integrate path
    y_int = np.interp(r_int, r, y)

    99. Given an integer n and a 2D array X, select from X the rows which can be interpreted as draws from a multinomial distribution with n degrees, i.e., the rows which only contain integers and which sum to n. (★★★)

    (提示: np.logical_and.reduce, np.mod)

    X = np.asarray([[1.00.03.08.0],
                    [2.00.01.01.0],
                    [1.52.51.00.0]])
    n = 4
    M = np.logical_and.reduce(np.mod(X, 1) == 0, axis=-1)
    M &= (X.sum(axis=-1) == n)print (X[M])

    [[2. 0. 1. 1.]]

    100. 对于一个一维数组X,计算它boostrapped之后的95%置信区间的平均值。

    (Compute bootstrapped 95% confidence intervals for the mean of a 1D array X,i.e. resample the elements of an array with replacement N times, compute the mean of each sample, and then compute percentiles over the means). (★★★)
    (提示: np.percentile)

    X = np.random.randn(100# random 1D array
    N = 1000 # number of bootstrap samples
    idx = np.random.randint(0, X.size, (N, X.size))
    means = X[idx].mean(axis=1)
    confint = np.percentile(means, [2.597.5])print (
    confint)
    欢迎扫码关注:

    04e51d73f242179076c6a45a6269062a.png

    展开全文
  • Project1.rar

    2020-07-15 21:34:53
    在源码的showRTInfo(string whichScreen) //real time info //这个whichScreen指的是缓冲区的意思,因为我用的是双缓冲。 4:AI蛇:AI的难度设计的刚刚好,不那么笨,也不那么聪明。。。。(我不会那种毫发无损吃...
  • 上一篇Project Tungsten On Spark-内存设计 总结了Spark内存设计相关的知识点,本篇会快速为读者复习一下JVM相关的知识点,然后基于线上的GC调优对spark整体的调优一个汇总,希望能让读者在调优之路更上一层楼。...
  • 和鲸社区https://www.kesci.com/home/project/59f29f67c5f3f5119527a2ccNumpy是Python数据分析所必须要掌握的基础库之一。以下为入门Numpy的100题小练习,原为github上的开源项目,由和鲸社区的小科翻译并整理...
  • 如果不明白对应字段或选项是什么意思的时候,把光标放在对应字段或Label上停留一会然后如果有解释会出现解释; 文档 更多详细文档请参考本库的Wiki Usage 贡献 目前本工具只是本人项目人使用到了并且觉得非常...
  • POJ 3304 Segments

    2012-02-07 08:50:00
    这个题一开始不知道project什么意思,理解成了判断是否存在一条直线能够和所有线段相交,后来百度project的意思之后发现原来是看是否存在一条直线使得当所有线段先直线投影之后,这些投影至少有一个公共点。...
  • 然后我看project的build.gradle什么鬼?空的。然后我再去看下载下来的文件。然来原文件里面没有project的build.gradle文件。讲道理,你一个官方Demo居然…… 找到问题就好办了,随便找一个最近的项目的project的...
  • 多余解释,错误见上图;jar包没导入成功,自然要想办法导入jar包,可选方法如下: 项目关闭,重新打开,maven会自动下载; 选中项目,右键选择RunAS,再选择Maven install,...什么意思? 明白了意思,...
  • BPE(我自己的缩写)

    千次阅读 2011-01-17 13:34:00
    这个关系图说的是什么意思呢,就是说Project D被分为了 A,B,C1,C2,C3这么多release,每个release都可以当做一个单独的项目,而其中 A与A1有关联,C1与CC有关联,而A,B中的部分或全部内容需要分别shift到C1,C2,C3中去...
  • hive 编写udf函数的时候需要注意的地方:如何编写UDF创建project 打jar包编写一个简单的函数怎么使用函数 什么是UDF: 它是User defined Function的简写,意思是用户自定义方法 为什么要用UDF? hive自带了一些函数,...
  • HTML基础知识入门

    2017-11-21 15:53:00
    好的,我们开始吧,打开Eclipse,新建一个项目,就叫做Base吧,基础班的意思。...(注:你不需要跟着我一步一步搭项目,到时候直接通过SVN把项目Import到本地,需要做什么作业的话,我会在最后给出。你们...
  • 把C语言程序分割成若干源文件

    千次阅读 2015-11-01 13:11:27
    第一次看《C程序设计语言 第2版·新版》没弄懂什么意思,听了中国大学MOOC上翁恺老师的《C语言程序设计进阶》后才知道。我是在Dev C++中的,可供参考。首先你得新建一个项目(project), 然后 右击项目名,...
  • 第一篇CSDN博客

    2019-02-18 13:52:06
    差不多是什么意思,就是不下去啊,没有任何的突破口 现在就想着个report   先在这儿立个flag吧 我要坚持每天背一点单词,写一点心得体会   人生有八苦 生老病死,爱别离,恨长久,求不得,放不下 最苦...
  • ```一直失败,我是前端不太懂maven,请问这命令什么意思?怎么才能搭起这个脚手架?![图片说明](https://img-ask.csdn.net/upload/202008/13/1597306031_802408.jpg)。 这个官方脚手架仓库: ...
  • eclipse build时

    2016-10-30 12:05:13
    大概意思是该项目编译需要java环境什么什么(我当时是报错信息里显示的是1.8.0_60)版本。其实如果重复点击大概3遍build还是可以成功编译的,但是并不能从根本解决问题。这周偶然找到了问题所在,如下。 ...
  • 最近有一个在一个基于react js的web项目,由于POC阶段创建的项目是一个普通的eclipse下的dynamic web project,在转入正式项目后,需要转成maven项目(别问为什么一开始没有创建成maven项目,我也不知道)。...
  • 其实从字面意思来说,只能了解各大概,view应该是视图的意思,那Model和Controller究竟是什么? Model: 处理数据逻辑和程序运行状态,实体类,用于存储属性值 View: 则只负责显示 Controller: 通常负责...
  • Delphi7 汉化包

    千次下载 热门讨论 2006-01-13 09:51:35
    但效果并不明显,也就没好意思拿出来。但心中总是感到有些遗憾,为什么Delphi这样好的编辑工具,始终不推出简体中文版呢? 一直等到Delphi7.0时,Smallfish终于等不住了,为了Delphi在华夏大地上的传播与推广,...
  • 我看到原文里的https后面有个斜杠不知道是什么意思,是不是这里多加了一个斜杠导致不能顺利解析网址。 ❎HVD Manager下载问题,很遗憾这个一直也没有解决,这里贴两篇帖子参考 HVD Manage无法下载问题从提出到解决...

空空如也

空空如也

1 2 3
收藏数 45
精华内容 18
关键字:

做project什么意思