用Python实现微信公众号传播指数WCI_v13.0版计算

之前在学习Python时编了一个实现计算WCI的程序:
WCI计算
后来发现传播指数WCI的计算定义已经发生了变化,
现在用的是全新版本13.0
如下:

微信传播指数WCI(V13.0)
WCI(V13.0)公式优化说明
1、指标拓展:指标更加丰富,从“整体传播力”、“篇均传播力”、“头条传播力”、“峰值传播力”四个维度进行评价,评价维度更全面。
2、算法优化:根据历史数据模型,优化指标权重,排名更加科学。
3、更新时间:2017年7月1日之后的榜单使用该公式。

WCI测算V13.0计算公式如下:
在这里插入图片描述
其中:
R为评估时间段内所有文章(n)的阅读总数;
Z为评估时间段内所有文章(n)的在看总数;
d为评估时间段所含天数(一般周取7天,月度取30天,年度取365天,其他自定义时间段以真实天数计算);
n为评估时间段内账号所发文章数;
Rt和Zt为评估时间段内账号所发头条的总阅读数和总在看数;
Rmax和Zmax为评估时间段内账号所发文章的最高阅读数和最高在看数。

代码实现如下:

"""
    作者:玉笙寒
    功能:WCI指数计算器
"""

import math

def main():
    """
            主函数
        """
    y_or_n = input('是否退出程序(y/n)?')
    while y_or_n != 'y':
        # 总阅读数R
        print('请输入以下参数:')
        R = float(input('评估时间内所有文章总阅读数:'))
        # 所有文章n
        n = float(input('评估时间内所有文章数:'))
        # 所有文章n
        d = float(input('评估时间内所含天数:'))
        # 平均阅读数(R/n)
        R_d = R / d
        R_n = R / n
        print('平均阅读数:', R_n)
        # 最高阅读数Rmax
        Rmax = float(input('所有文章的最高阅读数:'))
        # 所发头条总阅读数Rt
        Rt = float(input('所发头条总阅读数:'))
        # 所发头条总阅读数Rt
        Zt = float(input('所发头条总在看数:'))
        # 总在看数
        Z = float(input('评估时间内所有文章总在看数:'))
        # 平均点赞数(Z/n)
        Z_d = Z / d
        Z_n = Z / n
        # 最高点赞数Zmax
        Zmax = float(input('所有文章的最高在看数:'))
        # 点赞率
        Rt_d = Rt / d
        Zt_d = Zt / d


        #计算公式
        WCI = pow((0.3 * (0.85 * math.log(R_d + 1) + 0.15 * math.log(10 * Z_d + 1)) + 0.3 * (
                    0.85 * math.log(R_n + 1) + 0.15 * math.log(10 * Z_n + 1)) + 0.3 * (
                               0.85 * math.log(Rt_d + 1) + 0.15 * math.log(10 * Zt_d + 1)) + 0.1 * (
                               (0.85 * math.log(Rmax + 1)) + 0.15 * math.log(10 * Zmax + 1))), 2) * 10

        print('WCI指数为:', WCI)
        print('————————————————————————————')  
        y_or_n = input('是否退出程序(y/n)?')

if __name__ == '__main__':
    main()

WCI_13.0的计算公式与之前版本的分段函数相比来说更为简单,
只是在输入参数时较为繁琐,
可以设计成交互界面的模式,
等我学会了再来试试哈。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,要使用Direct3D 12进行超大图片渲染,需要使用纹理数组。纹理数组是多个相同大小和格式的纹理集合,可以同时绑定到渲染管线。这意味着,我们可以将大图片拆分成多个小纹理,并在渲染时一起使用。 接下来,我们需要将纹理数组中的每个小纹理分配到不同的图层。这可以通过使用纹理描述符来实现。在纹理描述符中,我们可以指定每个小纹理的大小、格式和图层。 接着,我们需要使用一个顶点缓冲区来描述纹理坐标和屏幕坐标之间的关系。这个顶点缓冲区包含每个小纹理的四个顶点和对应的纹理坐标。 最后,我们在渲染管线中使用纹理数组和顶点缓冲区,将所有小纹理渲染到屏幕上。在渲染时,我们可以使用视口和裁剪矩形来控制渲染区域,以避免渲染不必要的部分。 以下是示例代码: ```cpp // 创建纹理数组 D3D12_RESOURCE_DESC textureDesc = {}; textureDesc.Dimension = D3D12_RESOURCE_DIMENSION_TEXTURE2DARRAY; textureDesc.Width = smallTextureWidth; textureDesc.Height = smallTextureHeight; textureDesc.DepthOrArraySize = numTextures; textureDesc.MipLevels = 1; textureDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM; textureDesc.SampleDesc.Count = 1; textureDesc.Flags = D3D12_RESOURCE_FLAG_NONE; // 创建顶点缓冲区 struct Vertex { DirectX::XMFLOAT3 position; DirectX::XMFLOAT2 texCoord; }; std::vector<Vertex> vertices; for (int i = 0; i < numTextures; ++i) { float left = i * smallTextureWidth; float right = left + smallTextureWidth; float top = 0; float bottom = smallTextureHeight; vertices.push_back({ { left, top, 0 }, { 0, 0 } }); vertices.push_back({ { left, bottom, 0 }, { 0, 1 } }); vertices.push_back({ { right, top, 0 }, { 1, 0 } }); vertices.push_back({ { right, bottom, 0 }, { 1, 1 } }); } // 创建视口和裁剪矩形 D3D12_VIEWPORT viewport = {}; viewport.Width = screenWidth; viewport.Height = screenHeight; viewport.MaxDepth = 1.0f; D3D12_RECT scissorRect = {}; scissorRect.right = screenWidth; scissorRect.bottom = screenHeight; // 渲染 commandList->SetGraphicsRootSignature(rootSignature.Get()); commandList->SetPipelineState(pipelineState.Get()); commandList->RSSetViewports(1, &viewport); commandList->RSSetScissorRects(1, &scissorRect); commandList->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP); commandList->IASetVertexBuffers(0, 1, &vertexBufferView); commandList->SetGraphicsRootDescriptorTable(0, textureDescriptorHeap->GetGPUDescriptorHandleForHeapStart()); commandList->DrawInstanced(4, numTextures, 0, 0); ``` 这段代码中,我们使用顶点缓冲区中的四个顶点和纹理坐标来渲染每个小纹理,使用纹理数组中的图层来指定每个小纹理。同时,我们使用视口和裁剪矩形来控制渲染区域,以避免渲染不必要的部分。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值