结论:
没有axis参数表示全部相加,axis=0表示按列相加,axis=1表示按照行的方向。验证如下:
推广:
axis=i表示对array的第i个维度变化的方向进行操作!
numpy数组创建时是固定大小,python数组(list)是动态的。更改ndarray的大小将创建一个新数组并删除原来的数组。
元素类型区别。
NumPy数组中的元素都需要具有相同的数据类型,因此在内存中的大小相同。
python的List可以存放不同类型的元素。
例外情况:Python的原生数组里包含了NumPy的对象的时候,这种情况下就允许不同大小元素的数组。
数学操作执行效率高于原生python
越来越多的基于Python的科学和数学软件包使用NumPy数组
1 | /** |
输出结果:
上述代码是某次Java作业,题目描述如下:
编写员工Employee类,包含id、姓名、工资salary等属性。令Employee类实现java.lang.comparable接口,并实现compareTo()方法,制定比较规则。在测试类中创建几个Employee对象,利用java.util.Array类中的方法对其进行排序并打印输出结果。PS:关于比较的规则,建议分别按照name和salary进行升序排列。
题目出自接口技术一章,实则难点不在接口技术,Java新手在阅读上述代码往往会感到困惑,搞不懂为何对compareTo的自定义实现会影响sort方法的效果?
即使是小白,在阅读完代码后,也应该会产生这样的猜测:line48的java.util.Arrays.sort(staff);的sort方法内会不会用到了compareTo方法了呢?
很好的猜想,让我们进入sort()内部看看:
进入sort()内部实现后根据关键信息我们又能很轻易的追溯到mergeSort方法,那就继续进入mergeSort()的内部实现:
如果你看到这里:那么,恭喜你花生🥜,你发现的盲点!
很显然,mergeSort内部的排序依赖了参与排序的对象的两两比较(dest[]是对象数组)for循环最里层做的事情是将对象转换为Compareble类型并调用其compareTo()方法,所以需要被比较的对象实现Comparable接口。感兴趣的话可以搜一下模板方法设计模式,这算其中一个典型的应用,个人认为并不属于纯接口技术的编程题。
关于升序还是降序的问题,总结如下:
1 |
|
1 |
|