慕课python程序设计答案,慕课python编程基础答案

大家好,今天我们要解答,慕课python程序设计答案 慕课python编程基础答案,现在让我们一起来看看吧!

偶然的机会接触到七月在线数据分析这个课程,因为工作需要,于是我也加入了这个学习的大军中,收获也颇丰从PHP入门到精通的346讲:一段编程旅程的蜕变

一、课程的主要内容

1. ndarray:一种多维数组对象

ndarray是一个通用的同构数据多维容器,其中的所有元素必须是相同类型的。ndarray含有两个属性:shape: 一个表示各维度大小的数组

dtype:一个用于说明数据类型的对象

1.1 创建ndaray

1) array函数

它接受一切序列型的对象(list/set/tuple/ndarray/…)。除非显式说明,np.array会尝试为新建的这个数组推断出一个较为合适的数据类型:

import numpy as np

arr1 = np.array([1,2,3,4,5])

arr2 = np.array([[1,2,3,4], [5,6,7,8]]) # 二维数组

2) zeros/ones/empty函数

创建指定长度或形状的全0或全1或空数组,只需传入一个表示形状的元组(tuple)即可:

np.zeros(10)

((3,6)

np.empty((2,3,2)) #注意返回的并不是全0数组,而是未初始化的随机值

3) linspace函数:linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

返回在start到stop之间均匀分布的num个数字,可以选择是否包括stop. retstep表示是否返回步长.

np.linspace(1,5,5,True)

Out[4]: array([ 1., 2., 3., 4., 5.])

np.linspace(1,5,5,False)

Out[5]: array([ 1. , 1.8, 2.6, 3.4, 4.2])

3) arange函数:arange([start,] stop[, step,], dtype=None)

python内置函数range的数组版

np.arange(15)

4) 其它函数:

由于NumPy关注的是数值计算,因此,如果没有特别指定,数据类型基本都是float64(浮点数)array 将输入转换为ndarray,默认直接复制输入数据

asarray 将输入转换为ndarray,如果输入本身就是一个ndarray就不进行复制

ones_like/zeros_like/empty_like 以另一个数组为参数,并根据其形状和dtype创建一个全0/全1/空数组

eye/identify 创建一个单位矩阵(对角线为1,其余为0)

1.2 ndaray的数据类型

dtype含有ndarray将一块内存解释为特定数据类型所需要的信息

arr1 = np.array([1,2,3], dtype = np.float64)

arr2 = np.array([1,2,3], dtype = np.int32)

NumPy的数据类型:int8/int16/int32/int64 有符号8/16/32/64位整数,类型代码 i1/i2/i4/i8 (分别为1/2/4/8个字节)

uint8/uint16/uint32/uint64 无符号8/16/32/64位整数,类型代码 u1/u2/u4/u8

float16/float32/float64/float128 浮点数,类型代码 f2/f4/f8/f16

complex64/complex128/complex256 复数,类型代码 c8/c16/c32

bool 布尔类型 ,类型代码 ?

object Python对象类型,类型代码 O

string_ 固定长度的字符串类型(每个字符一个字节),类型代码 S 。例如,要创建一个长度为10的字符串,应使用S10

unicode 固定长度的unicode类型,类型代码 U 。同字符串(如U10)

数据类型转换: astype方法

int_arr = np.array([1,2,3,4,5])

float_arr = int_arr.astype(np.float64)

numeric_str = np.array (['1.25', '-9.6', '42'], dtype = np.string_)

float_arr = numeric_str.astype(float) # 这里的float是Python的数据类型,NumPy会自动的将其映射到等价的dtype上,即np.float64

注意:astype无论如何都会创建出一个新的数组(原始数据的一分拷贝)

1.3 ndaray与标量的计算

使用数组运算的好处是不写循环即可对数据进行批量运算,即矢量化(vectorization)。需要注意的是:大小相等的数组之间的任何算术运算都会将运算应用到元素级

数组与标量的算术运算会将标量值传播到各个元素

1.4 索引与切片

2.4.1 一维数组

一维数组的索引与切片和Python列表的功能类似,区别在于,数组切片是原始数组的视图,这意味着数据不会被复制,对视图的任何修改都会直接反映到原数组上。NumPy如此设计的目的是为了处理大数据,如果采取复制的方法可能产生性能和内存的问题。

arr = np.arange(10)

arr[5:8] = 12

arr

Out[10]:array([0, 1, 2, 3, 4, 12, 12, 12, 8, 9])

如果一定要复制可以使用copy方法显式的复制。

1.4.2 多维数组

多维数组中,如果省略了后面的索引,则返回对象会是一个维度低一点的ndarray。例如,二维数组中,各索引位置上的元素不再是标量而是一维数组。

arr2d = np.array([[1,2,3], [4,5,6], [7,8,9]])

arr2d[2]

Out[11]:array([7, 8, 9])

arr2d[0][2]

arr2d[0,2] # 这两种索引方法等价

1.4.3 多维数组切片

多维数组切片与一维数组稍有不同

arr2d = np.array([[1,2,3], [4,5,6], [7,8,9]])

arr2d[:2]

Out[1]: array([[1,2,3],

[4,5,6]])

可以看出,它是按第0轴(第一个轴)切片的。切片是沿着一个轴向选取元素的。

可以一次传入多个切片,也可以将整数索引和切片混合:

arr2d[:2, 1:]

Out[2]: aray([[2,3],

[5,6])

arr2d[1, :2]

Out[3]: array([4, 5])

arr2d[:, :1]

Out[4]: aray([[1],

[4],

[7]])

1.4.4 布尔型索引

与算数运算类似,数组的比较运算(如==)也是矢量化的。

names = np.array(['Bob', 'Joe', 'Will', 'Bob', 'Will', 'Joe', 'Joe'])

data = np.random.randn(7, 4) # 产生7x4的随机数组

names == 'Bob'

Out[5]: array([True, False, False, True, False, False, False], dtype = bool)

data[names == 'Bob'] # 布尔索引

data[names = 'Bob', 2:] # 布尔索引与切片

data[-(names == 'Bob')]

mask = (names == 'Bob') | (names = 'Will') # 多个布尔条件用&(与)、|(或)等连接起来。(and/or无效)

通过布尔型索引选取数组中的数据,将总是创建副本,即使返回一模一样的数组。通过布尔型数组设置值是常用的手段。例如:

data[data<0] = 0 # 将data中的所有的负值都设为0

data[names != 'Joe'] = 7 # 将不为Joe的值设为7

2. numpy通用函数

一元函数:abs/fabs 绝对值。对于非复数,可以使用更快的fabs

sqrt/square/exp/log/log10/log2/log1p 平方根/平方/指数/自然对数/底数为10的log/底数为2的log

sign 返回元素的符号:1(正数)、0(零)、-1(负数)

ceil/floor 取上界/下界整数

rint 四舍五入到整数

modf 返回数组的小数和正数两个独立的数组

isnan 返回布尔数组,判断是否为数字

isfinite/isinf 是否有穷/无穷

cos/cosh/sin/sinh/tan/tanh 普通和双曲三角函数

二元函数:add/subtract/multiply/divide/floor_divide 加/减/乘/除/向下圆整除法

power 第一个数组中的是底数,第二个数组中的是指数

maximum/fmax/minimum/fmin 最大最小值(fmax/fmin忽略NaN)

mod 取模

copysign 将第二个数组中的值的符号复制给第一个数组中

greater/greater_equal/less/less_equal 元素级比较,产生布尔数组。

logical_and/logical_or/logical_xor 元素级真值逻辑运算。&、|、^。

二、课程的收获

本课程学习了python数据分析的最基本的库之一numpy库,因为python中的list可以存放多种元素,造成了维护成本高,遍历速度慢,所以采用使用底层语言写的numpy,提高了速度。而同时,numpy的主要功能有:ndarray: 一个具有矢量运算和复杂广播能力的快速并且节省空间的多维数组

面向数组的运算: 对于数组进行快速运算的标准数学函数

磁盘读写、内存映射

线性代数、随机数、傅里叶变换

通过numpy库的学习,可以使我们更方便的学习和操作数据科学。

三、关于python的感悟

Python的普遍性是由于它有着各种各样生态的库,jieba、itchat等等,但是这是一把双刃剑,python的各种库导致了它不能够像其他底层语言一样对各种函数和功能烂熟于心,这就需要我们不时的去查库和help,所以,在python的学习中,需要定位的是python编程只是一个方式、工具而已,不需要大量的精力和时间于此,更多的应该工于算法、工程以及本身的业务。当然,磨刀不误砍材工,python绝对是数据科学的一把利刃,但是也不能本末倒置,而阻碍了数据科学的本身。


原文地址1:https://blog.csdn.net/weixin_39616503/article/details/111025380
参考资料:python中用turtle画一个圆形 https://blog.csdn.net/SXIAOYAN_/article/details/140061099

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值