您的位置:

python中asarray,Python中的!

本文目录一览:

如何创建pdf的buffer,让pdf.js实现预览pdf文件

PDF.js 是基于开放的 HTML5 及 JavaScript 技术实现的开源产品。简单说就是一个 PDF 解析器。运用HTML5JavaScript(即pdf.js仅使用安全的web语言,不包含任何攻击者可以用的本地代码块)的PDF阅读器pdf.js,直接在标准的HTML页面上载入和渲染PDF文件, 还可以提高安全性(不需要安装第三方插件,安全性由浏览器保证),浏览器所做的安全措施已经为pdf.js提供了安全的运行环境。其对IE和 FireFox浏览器的要求是IE9+, FireFox19+。

在线示例: ,

源码:

官网:

pdf.js VS 传统浏览器读取pdf

一般来说,PDF档案格式都是在浏览器中由外挂程式来描绘,通常是Adobe自己的PDF reader或来自其他供应商的描绘工具,但这些外挂通常无法充分运用PDF的特点,而且由于含有大量的受信任代码,使得Google Chrome浏览器必须运用SandBox沙箱原理,来检查PDF描绘工具是否遭到未知病毒感染。

使用adobe,必须在本地安装软件才能使用,而pdf.js不依赖环境、渲染速度快(测试过,确实很快)、安全性高。

pdf.js渲染PDF文件

pdf.js渲染PDF文件的流程:Fetch pdf (url / buffer) —— canvas —— 渲染

如果要深入pdf的渲染,需要去研究pdf.js源代码。pdf.js可通过pdf文件的地址或pdf数据流获取pdf,具体实现是调用接口函数 PDFJs.getDoc(url/buffer)将pdf载入html,通过canvas处理, 然后渲染pdf文件。网上给出的都是通过url来获取pdf的例子,而我在做项目的时候,后台(python)要求是发pdf的数据流给前台,前台接收pdf的buffer,然后通过pdf.js来渲染。当然最初尝试buffer出现了很多问题,具体问题总结如下:

1)如何通过$.ajax接收后台发给前台的buffer数据;

2)如何将buffer传给pdf.js来处理(这里我使用了viewer.js, 所以需要考虑的是如何将buffer传给viewer.js来处理);

3)如何将pdf.js转换成pdf.js可以接收的buffer格式;

(对应问题解决见代码注释)

注:viewer.js是pdf.js的扩展,其将打印、翻页、缩放等功能进行了实现,且界面非常好看。也就是说如果你引入了viewer.js,pdf的渲染和渲染之后的功能界面都已经帮你实现了,你不用自己去写界面。

先从官网: 下载代码,然后使用文件viewer.html , 我的html就是在viewer.html 的基础上修改的,下面我给出buffer的例子:

!DOCTYPE html

html dir="ltr" mozdisallowselectionprint moznomarginboxes

head

meta charset="utf-8"

meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"

meta name="google" content="notranslate"

title在线预览/title

{% load static %}{% get_static_prefix as STATIC_URL %}

link href="{{STATIC_URL}}css/preview.css" rel="stylesheet" type="text/css" /

link rel="stylesheet" href="{{STATIC_URL}}pdfjs/web/viewer.css"/

script type="text/javascript" src="{{STATIC_URL}}pdfjs/web/compatibility.js"/script

link rel="resource" type="application/l10n" href="{{STATIC_URL}}pdfjs/web/locale/locale.properties"/

script type="text/javascript" src="{{STATIC_URL}}pdfjs/web/l10n.js"/script

script type="text/javascript" src="{{STATIC_URL}}pdfjs/build/pdf.js"/script

script type="text/javascript" src="{{STATIC_URL}}pdfjs/web/debugger.js"/script

script src="{{STATIC_URL}}js/jquery-1.8.3.js" type="text/javascript"/script

script type="text/javascript"

//convertDataURIToBinary()

//不知道什么原因如果后台直接将pdf的数据流发给前台,得到的是乱码,将数据转换成 Uint8Array始终不成功

//所以就让后台将发送之前的数据流做 了base64编码发给前台,前台再解码得到的数据就不是乱码了。

var BASE64_MARKER = ';base64,';

var preFileId = {{mark}};

//viewer.js全局变量,传入buffer,回答问题2

var DEFAULT_URL

$(document).ready(function(){

$.ajax({

type:"post",

async: false,

//ajax接收pdf数据流,注意dataType值的设置是否有错,如果不指定,jQuery将自动根据HTTP包MIME信息返回

//responseXML或responseText . 回答问题1

contentType:"application/pdf;charset=utf-8",

url:"{% url netPan.File.views.browserFuf%}",

data:{

id: preFileId

},

success:function(data){

var pdfAsDataUri = data;

//如果引入了viewer.js , 处理方法

var pdfAsArray = convertDataURIToBinary(pdfAsDataUri);

DEFAULT_URL = pdfAsArray;

// 只引入了pdf.js, 未引入viewer.js, 处理方法

// var pdfAsArray = convertDataURIToBinary(pdfAsDataUri);

// PDFJS.getDocument(pdfAsArray).then(); 自己写pdf的处理函数

}

});

});

function convertDataURIToBinary(dataURI) { //编码转换,回答问题3

var base64Index = dataURI.indexOf(BASE64_MARKER) + BASE64_MARKER.length;

var base64 = dataURI.substring(base64Index);

var raw = window.atob(base64);

var rawLength = raw.length;

//转换成pdf.js能直接解析的Uint8Array类型,见pdf.js-4068

var array = new Uint8Array(new ArrayBuffer(rawLength));

for(i = 0; i rawLength; i++) {

array[i] = raw.charCodeAt(i);

}

return array;

}

/script

!--先设置全局变量DEFAULT_URL 的值,所以要后调入viewer.js --

script type="text/javascript" src="{{STATIC_URL}}pdfjs/web/viewer.js"/script

/head

body

省略内容

/body

/html

numpy中array和asarray的区别

论numpy中matrix 和 array的区别,有需要的朋友可以参考下。Numpy matrices必须是2维的,但是numpy arrays (ndarrays) 可以是多维的(1D,2D,3D····ND). Matrix是Array的一个小的分支,包含于Array。所以matrix 拥有array的所有特性。在numpy中matrix的主要优势是:相对简单的乘法运算符号。例如,a和b是两个matrices,那么a*b,就是矩阵积。

python中如何提取一组数据中的第一列数据

概述

直接提取会报错,把array数组转换成list,即可提取,使用numpy转换

步骤详解

1、直接提取尝试:

group=[[1,2],[2,3],[3,4]]

#提取第一列元素

print(group[:,1])

#Out:TypeError: list indices must be integers or slices, not tuple

2、使用numpy转换:

import numpy as np

group=[[1,2],[2,3],[3,4]]

#numpy转化

ar=np.array(group)

print(ar[:,1])

#Out:[2 3 4]

拓展内容

numpy详解

Numpy对象是数组,称为ndarray 

维度(dimensions)称作轴(axes),轴的个数叫做秩(rank)。注:有几级中括号就有几个维度

一、ndarray.attrs:

ndarray.ndim 秩

ndarray.shape 例如一个2排3列的矩阵,它的shape属性是(2,3)

ndarray.size 数组元素的总个数

ndarray.dtype 元素类型,NumPy提供自己的数据类型

ndarray.itemsize 数组中每个元素的字节大小

二、数组创建函数:

array

asarray将输入转换成ndarray

arange

ones

zeros

empty 只分配内存空间不填充任何值

eye 创建N*N单位矩阵(对角线为1)

三、数组和标量之间的运算

numpy数组的一个特点,不用编写循环就可对数据执行批量运算,这通常称作矢量化(vectorization)。

四、基本的索引和切片

numpy数组的索引是一个内容丰富的主题,因为选取数据子集或单个元素的方式有很多。这里我仅详细介绍常用的方法,对于高级功能的方式我列举名称,读者可以等到要用的时候自行查阅资料。

shared_x = theano.shared(numpy.asarray(data_x, dtype=theano.config.floatX))这句话什么意思?

我发现这句话几乎跟我写的一抹一样,变量都一样。我来给你详解:

asarray是python numpy的函数,这里的data_x应该就是机器学习的输入向量,是numpy的array格式,为了把他转成theano的floatX格式,用asarray加上后面的参数dtype改成想要的theano格式。也就是说theano.shared括号里面的基本都是numpy。shared就是把他变成theano的全局变量。

注意:array就是数组,矩阵,asarray是一个函数,这里就是把本来的矩阵该一下dtype重新改成符合theano dype的矩阵。

python check input data with np.asarray怎么解决

If X is your dataframe, try using the .astype method to convert to float when running the model:

est = sm.OLS(y, X.astype(float)).fit()

python 批量定义变量

variables={}

for i in range(1,band):

    variables['a'+str(i)]=ds.GetRasterBand(i).ReadAsArray(0,0,cols,rows)