python爬虫(3)

本文介绍了如何在NumPy中进行数组的一维和多维重塑,包括reshape函数的应用,以及数组的转置方法(T属性和transpose函数)。同时展示了如何使用动态规划求解最长公共子序列的示例。
摘要由CSDN通过智能技术生成

上一次的代码结果如下:

当然会有一点点不一样是正常的表现,因为这个图本身使用随机数rand函数做的,用其他两种随机函数出来的结果也不会完全相同。

继上节这次带来的是数组的重塑和转置

1、一维数组的重塑

在NumPy模块中的reshape()函数可以在不改变数组元素内容和个数的情况下重塑数组形状

代码示例如下:

import numpy as np

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

o =c.reshape(3,4)

p =c.reshape(4,3)

print(o)

print(p)

其中这里reshape(行数,列数)

结果如下:

2、多维数组的重塑

这里reshape也可以改变多维数组的形状

import numpy as np

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

o =c.reshape(3,4)

p =o.reshape(4,3)

print(o)

print(p)

这里是将上个例子进行改变可以发现还是可以改变的

结果如下:

其中将多维数组改编为一维数组也是有办法的

flatten()和ravel()函数

示例如下:

import numpy as np

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

o =c.reshape(3,4)

p =o.reshape(4,3)

print(o.flatten())

print(p.ravel())

结果如下:

数组的转置:

T属性:就是将数组的行和列进行交换

import numpy as np

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

o =c.reshape(3,4)

print(o)

print(o.T)

结果如下:

当然有一个与T属性效果相同的函数叫做transpose()

例子如下:

import numpy as np

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

o =c.reshape(3,4)

print(o)

c1=np.transpose(o)

print(c1)

结果如下:

为大家带来一串代码:

def lcs(str1, str2, dp):

    len1 = len(str1)

    len2 = len(str2)

    for i in range(1, len1+1):                          

        for j in range(1, len2+1):

            if str1[i-1] == str2[j-1]:                  

                dp[i][j] = dp[i-1][j-1] + 1

            else:

                dp[i][j] = max(dp[i-1][j], dp[i][j-1])

    return dp[len1][len2]                              

def getlcs(str1, str2, dp):

    i = len(str1)

    j = len(str2)

    res = " "

    while(i != 0 and j != 0):                          

        if(str1[i-1] == str2[j-1]):

            res += str1[i-1]

            i -= 1

            j -= 1

        else:

            if(dp[i][j] == dp[i-1][j]):                

                i -= 1

            else:

                j -= 1

    return res[::-1]                                    

str1 = "bdcaba"

str2 = "abcbda"

lenA = len(str1)

lenB = len(str2)

dp = [[0 for i in range(lenA+1)] for j in range(lenB+1)]  

length = lcs(str1, str2, dp)

print("最长公共子序列长度为:", length)

print("dp表为:", dp)

res = getlcs(str1, str2, dp)

print("最长公共子序列为:", res)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

过度引用

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值