python入门第七课

版权声明:===========版权所有,可随意转载,欢迎互相交流=========== https://blog.csdn.net/weixin_42446330/article/details/81429480

有人会问为啥没有第五、六课呢?

我不会告诉你我没听懂的。

书归正传,继续第七课的练习。

练习一:简单加法

在 Python 下对一个二维列表,l1=[[1,2,3],[4,5,6]],然后进行每个元素+1 的操作。

要求使用

 Python 循环

 Map 函数

 Numpy 计算(广播算法)

方法一;

l1=[[1,2,3],[4,5,6]]
for i in range(len(l1)):
    for j in range(len(l1[i])):
        l1[i][j]+=1
print(l1)

方法二:

l1=[[1,2,3],[4,5,6]]
def foo(x):
    for i in range(len(x)):
        x[i] += 1
    return x
print list(map(foo,l1))

方法三;

import numpy as np
l1=[[1,2,3],[4,5,6]]
arr = np.array(l1)+1
print arr

输出结果:

练习二:对 arr= [[1, 2, 3], [4, 5, 6], [7,8, 9], [10, 11, 12]]进行行列互转

  Python 列表表达式

Numpy 进行转置

arr= [[1, 2, 3], [4, 5, 6], [7,8, 9], [10, 11, 12]]
x= [[row[i] for row in arr] for i in range(len(arr[0]))]
print x
import numpy as np
arr= [[1, 2, 3], [4, 5, 6], [7,8, 9], [10, 11, 12]]
print np.transpose(arr)

输出结果:

这个列表推导式逻辑不太好理解,他是同时执行两个函数

练习三:矩阵内部运算

 在 Python 下对一个二维列表,l1=[[1,2,3],[4,5,6]],要求求出按行与按列求和。

 在 numpy 下对一个二维列表,l1=[[1,2,3],[4,5,6]],要求求出按行与按列求和。

l1= [[1, 2, 3], [4, 5, 6]]
sum_r=[sum(x) for x in l1]
s = []
total = 0
for column in range(len(l1[0])):
    # print("column = ",column)
    for i in range(len(l1)):
        total += l1[i][column]
    s.append(total)

print sum_r,s

输出结果:

 

对行求和用了列表表达式,逻辑还比较清楚,对列求和比较麻烦,最后终于弄清楚了使用了l1[i][j]的切片,也算是笨办法,有更好的希望一起交流。

还是numpy简单,一个函数就搞定了

import numpy as np
l1= [[1, 2, 3], [4, 5, 6]]
l2=np.array(l1)
print l2.sum(axis=0)
print l2.sum(axis=1)

输出结果:

感觉numpy好好用啊!

练习四:NDArray 创建与属性

 使用 Numpy 创建一个多维数组,请输出以下属性

 该数组的形状

 该数组的维度

 该数组元素的个数

 该数组的数据类型

import numpy as np
arr = np.arange(12).reshape(3,4)
print arr
print arr.shape
print arr.ndim
print arr.size
print arr.dtype

输出结果:

练习五:NDArray 的访问

创建一个包含从数字 1 到 60,的数组,并将于其形状变为为(3,2,10)的三维数组,并按如下要求访问这个三维数组

import numpy as np
arr = np.arange(1,61).reshape(3,2,10)
print '原始数组',arr
print '-'*50
print arr[:,[1],:]
print '-'*50
print arr[[0],[0],:]
print '-'*50
print arr[:,:,[6,7]]
print '-'*50
arr1=np.reshape(arr,[10,-1])
print arr1
print '-'*50
print np.random.shuffle(arr1)
print '-'*50
print np.sort(arr1,axis=1)
print np.sort(arr1,axis=0)
print np.transpose(arr1)
print np.transpose(arr1).flatten()

输出结果:

注意:

np.random.shuffle(arr1)
print arr1

shuffle函数对数组做处理,所以需要输出后,直接打印才可以

猜你喜欢

转载自blog.csdn.net/weixin_42446330/article/details/81429480