【Python】李宏毅ML2017作业整理-HW0

HW0

print "**********Numpy访问(数组&矩阵)***********"
def f(x,y):
    return 10*x+y
arr8=np.fromfunction(f,(4,3),dtype=int)   #创建矩阵
print arr8
print "****迭代器访问矩阵****"
for row in arr8:
    print row
    for i in [0,1,2]:          #修改矩阵的值
        row[i]+=8
print arr8
for element in arr8.flat:              #访问矩阵中的元素
    print element,
print "**********NumPy【矩阵的运算】*************"
ar1=np.array([[2,1],[1,2]])
ar2=np.array([[1,2],[3,4]])
np.allclose(ar1,ar2) #判断两个矩阵是否相当,返回值为boolean类型
print ar1-ar2
print ar1**2
print ar2*3
print ar1*ar2   #普通乘法
print np.dot(ar1,ar2)  #矩阵乘法
print ar2.T    #转置
print np.linalg.inv(ar2) #矩阵的逆
np.linalg.eig(ar2) #矩阵的特征值
print ar2.sum() #矩阵元素求和
print ar2.max()    #矩阵最大的元素
ar3=np.array([[1,2],[3,4],[5,6]])
print ar3.cumsum(1)     #按行累计总和
print "*************NumPy 矩阵的合并和分割***************"
ar7=np.vstack((ar1,ar2)) #纵向合并矩阵
print ar7
ar8=np.hstack((ar1,ar2))
print ar8       #横向合并矩阵
print "纵向分割"
print np.vsplit(ar7,2)
print "横向分割"
print np.hsplit(ar8,2)
  • 读取文件
    with语句打开文件,我们可以不用专门调用close()关闭文件。
    Python提供了以下三种读取方法,但这三种方法都是把每行末尾的’\n’也读进来了,它并不会默认的把’\n’去掉,需要我们手动去掉

read()
每次读取整个文件,它通常用于将文件内容放到一个字符串变量中。如果文件大于可用内存,为了保险起见,可以反复调用read(size)方法,每次最多读取size个字节的内容。
readlines()
一次读取整个文件,且自动将文件内容分析成一个行的列表(文件中的一行存为列表中的一列),该列表可以由 Python 的 for … in … 结构进行处理。
readline()
每次只读取一行,通常比readlines() 慢得多。仅当没有足够内存可以一次读取整个文件时,才应该使用 readline()。

with open("data/matrixB.txt", "r") as lines:
    matrixB = lines.readlines() 
    # matrixB: ['1,1,1\n', '2,2,2\n', '3,3,3\n', '4,4,4\n', '5,5,5\n', '6,6,6\n'] 
    matrixB = [line.strip() for line in matrixB]
    # matrixB: ['1,1,1', '2,2,2', '3,3,3', '4,4,4', '5,5,5', '6,6,6'] 
    matrixB = [list(map(int, line.split(','))) for line in matrixB]
    # matrixB: [[1,1,1], [2,2,2], [3,3,3], [4,4,4], [5,5,5], [6,6,6]] 
  • 写文件:和读取类似,但只有write(), writelines()
with open('test.txt', 'w') as f:
    f.write(["1", "2", "3"])
#    此时test1.txt的内容为:123
with open('test1.txt', 'w') as f1:
	f1.writelines(["1\n", "2\n", "3\n"])
#    此时test1.txt的内容为:
#    1
#    2        
#    3

注意:write(), read(), readline() 对应字符串,readlines(), writelines() 对应列表

  • strip() str.strip([chars]); 移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
    注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符,且只要头尾包含有指定字符序列中的字符就删除。
str0 = "  000120abc021000 \n"
str1 = str0.strip()
print(str1) # str1="000120abc021000"

print(str1.strip('0')) #删除字符串开头和结尾指定为0的字符
print(str1.lstrip('0')) #删除字符串开头指定为0的字符
print(str1.rstrip('0')) #删除字符串结尾指定为0的字符

# 只要头尾包含有指定字符序列中的字符就删除
str2 = "123abcrunoob321"
print (str2.strip( '12' )) # "3abcrunoob3“
  • map():根据提供的函数对指定序列做映射。
    注意:Python 2.x 返回列表;Python 3.x 返回迭代器
map(function, iterable, ...)
# function -- 函数
# iterable -- 一个或多个序

第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。

map(lambda x: x ** 2, [1, 2, 3, 4, 5])  # 使用 lambda 匿名函数
[1, 4, 9, 16, 25]
# 提供了两个列表,对相同位置的列表数据进行相加
map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
[3, 7, 11, 15, 19]
  • pillow
import PIL
from PIL import image
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值