Python NumPy库安装使用笔记
1. NumPy安装
使用pip包管理工具进行安装
代码如下:
$ sudo pip install numpy
使用pip包管理工具安装ipython(交互式shell工具)
代码如下:
$ sudo pip instlal ipython
$ ipython --pylab #pylab模式下, 会自动导入SciPy, NumPy, Matplotlib模块
2. NumPy基础
2.1. NumPy数组对象
具体解释可以看每一行代码后的解释和输出
代码如下:
In [1]: a = arange(5) # 创建数据
In [2]: a.dtype
Out[2]: dtype('int64') # 创建数组的数据类型
In [3]: a.shape # 数组的维度, 输出为tuple
Out[3]: (5,)
In [6]: m = array([[1, 2], [3, 4]]) # array将list转换为NumPy数组对象
In [7]: m # 创建多维数组
Out[7]:
array([[1, 2],
[3, 4]])
In [10]: m.shape # 维度为2 * 2
Out[10]: (2, 2)
In [14]: m[0, 0] # 访问多维数组中特定位置的元素, 下标从0开始
Out[14]: 1
In [15]: m[0, 1]
Out[15]: 2
2.2. 数组的索引和切片
代码如下:
In [16]: a[2: 4] # 切片操作类似与Python中list的切片操作
Out[16]: array([2, 3])
In [18]: a[2 : 5: 2] # 切片步长为2
Out[18]: array([2, 4])
In [19]: a[ : : -1] # 翻转数组
Out[19]: array([4, 3, 2, 1, 0])
In [20]: b = arange(24).reshape(2, 3, 4) # 修改数组的维度
In [21]: b.shape
Out[21]: (2, 3, 4)
In [22]: b # 打印数组
Out[22]:
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]],
[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]])
In [23]: b[1, 2, 3] # 选取特定元素
Out[23]: 23
In [24]: b[ : , 0, 0] # 忽略某个下标可以用冒号代替
Out[24]: array([ 0, 12])
In [23]: b[1, 2, 3]
Out[23]: 23
In [24]: b[ : , 0, 0] # 忽略多个下标可以使用省略号代替
Out[24]: array([ 0, 12])
In [26]: b.ravel() # 数组的展平操作
Out[26]:
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23])
In [27]: b.flatten() # 与revel功能相同, 这个函数会请求分配内存来保存结果
Out[27]:
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23])
In [30]: b.shape = (6, 4) # 可以直接对shape属性赋值元组来设置维度
In [31]: b
Out[31]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]])
In [30]: b.shape = (6, 4) # 矩阵的转置
In [31]: b
Out[31]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]])
2.3. 组合数组
代码如下:
In [1]: a = arange(9).reshape(3, 3) # 生成数组对象并改变维度
In [2]: a
Out[2]:
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
In [3]: b = a * 2 # 对a数组对象所有元素乘2
In [4]: b
Out[4]:
array([[ 0, 2, 4],
[ 6, 8, 10],
[12, 14, 16]])
#######################
In [5]: hstack((a, b)) # 水平组合数组a和数组b
Out[5]:
array([[ 0, 1, 2, 0, 2, 4],
[ 3, 4, 5, 6, 8, 10],
[ 6, 7, 8, 12, 14, 16]])
In [6]: vstack((a, b)) # 垂直组合数组a和数组b
Out[6]:
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 0, 2, 4],
[ 6, 8, 10],
[12, 14, 16]])
In [7]: dstack((a, b)) # 深度组合数组, 沿z轴方向层叠组合数组
Out[7]:
array([[[ 0, 0],
[ 1, 2],
[ 2, 4]],
[[ 3, 6],
[ 4, 8],
[ 5, 10]],
[[ 6, 12],
[ 7, 14],
[ 8, 16]]])
2.4. 分割数组
代码如下:
In [8]: a
Out[8]:
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
In [9]: hsplit(a, 3) # 将数组沿水平方向分割成三个相同大小的子数组
Out[9]:
[array([[0],
[3],
[6]]),
array([[1],
[4],
[7]]),
array([[2],
[5],
[8]])]
In [10]: vsplit(a, 3) # 将数组沿垂直方向分割成三个子数组
Out[10]: [array([[0, 1, 2]]), array([[3, 4, 5]]), array([[6, 7, 8]])]
2.5. 数组的属性
代码如下:
In [12]: a.ndim # 给出数组的尾数或数组的轴数
Out[12]: 2
In [13]: a.size # 数组中元素的个数
Out[13]: 9
In [14]: a.itemsize # 数组中元素在内存中所占字节数(int64)
Out[14]: 8
In [15]: a.nbytes # 数组所占总字节数, size * itemsize
Out[15]: 72
In [18]: a.T # 和transpose函数一样, 求数组的转置
Out[18]:
array([[0, 3, 6],
[1, 4, 7],
[2, 5, 8]])
2.6. 数组的转换
代码如下:
In [19]: a.tolist() # 将NumPy数组转换成python中的list
Out[19]: [[0, 1, 2], [3, 4, 5], [6, 7, 8]]
3. 常用函数
代码如下:
In [22]: c = eye(2) # 构建2维单位矩阵
In [23]: c
Out[23]:
array([[ 1., 0.],
[ 0., 1.]])
In [25]: savetxt("eye.txt", c) # 将矩阵保存到文件中
In [5]: c, v = loadtxt("test.csv", delimiter=",", usecols=(0, 1), unpack=True) # 分隔符为, usecols为元组表示要获取的字段数据(每一行的第零段和第一段), unpack为True表示拆分存储不同列的数据, 分别存入c, v
In [12]: c
Out[12]: array([ 1., 4., 7.])
In [13]: mean(c) # 计算矩阵c的mean均值
Out[13]: 4.0
In [14]: np.max(c) # 求数组中的最大值
Out[14]: 7.0
In [15]: np.min(c) # 求数组中的最小值
Out[15]: 1.0
In [16]: np.ptp(c) # 返回数组最大值和最小值之间的差值
Out[16]: 6.0
In [18]: numpy.median(c) # 找到数组中的中位数(中间两个数的平均值)
Out[18]: 4.0
In [19]: numpy.var(c) # 计算数组的方差
Out[19]: 6.0
In [20]: numpy.diff(c) # 返回相邻数组元素的差值构成的数组
Out[20]: array([ 3., 3.])
In [21]: numpy.std(c) # 计算数组的标准差
Out[21]: 2.4494897427831779
In [22]: numpy.where(c > 3) # 返回满足条件的数组元素的下标组成的数组
Out[22]: (array([1, 2]),)

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











모바일 XML에서 PDF의 속도는 다음 요인에 따라 다릅니다. XML 구조의 복잡성. 모바일 하드웨어 구성 변환 방법 (라이브러리, 알고리즘) 코드 품질 최적화 방법 (효율적인 라이브러리 선택, 알고리즘 최적화, 캐시 데이터 및 다중 스레딩 사용). 전반적으로 절대적인 답변은 없으며 특정 상황에 따라 최적화해야합니다.

단일 애플리케이션으로 휴대 전화에서 직접 XML에서 PDF 변환을 완료하는 것은 불가능합니다. 두 단계를 통해 달성 할 수있는 클라우드 서비스를 사용해야합니다. 1. 클라우드에서 XML을 PDF로 변환하십시오. 2. 휴대 전화에서 변환 된 PDF 파일에 액세스하거나 다운로드하십시오.

C 언어에는 내장 합계 기능이 없으므로 직접 작성해야합니다. 합계는 배열 및 축적 요소를 가로 질러 달성 할 수 있습니다. 루프 버전 : 루프 및 배열 길이를 사용하여 계산됩니다. 포인터 버전 : 포인터를 사용하여 배열 요소를 가리키며 효율적인 합계는 자체 증가 포인터를 통해 달성됩니다. 동적으로 배열 버전을 할당 : 배열을 동적으로 할당하고 메모리를 직접 관리하여 메모리 누출을 방지하기 위해 할당 된 메모리가 해제되도록합니다.

XML을 PDF로 직접 변환하는 응용 프로그램은 근본적으로 다른 두 형식이므로 찾을 수 없습니다. XML은 데이터를 저장하는 데 사용되는 반면 PDF는 문서를 표시하는 데 사용됩니다. 변환을 완료하려면 Python 및 ReportLab과 같은 프로그래밍 언어 및 라이브러리를 사용하여 XML 데이터를 구문 분석하고 PDF 문서를 생성 할 수 있습니다.

XSLT 변환기 또는 이미지 라이브러리를 사용하여 XML을 이미지로 변환 할 수 있습니다. XSLT 변환기 : XSLT 프로세서 및 스타일 시트를 사용하여 XML을 이미지로 변환합니다. 이미지 라이브러리 : Pil 또는 Imagemagick와 같은 라이브러리를 사용하여 XML 데이터에서 이미지를 그리기 및 텍스트 그리기와 같은 이미지를 만듭니다.

XML 이미지를 먼저 변환하려면 먼저 XML 데이터 구조를 결정한 다음 Python의 Matplotlib와 같은 적절한 그래픽 라이브러리를 선택하고 데이터 구조를 기반으로 시각화 전략을 선택하고 데이터 볼륨 및 이미지 형식을 고려하고 효율적인 라이브러리를 수행하거나 필요에 따라 PNG, JPEG 또는 SVG로 저장하십시오.

XML 서식 도구는 규칙에 따라 코드를 입력하여 가독성과 이해를 향상시킬 수 있습니다. 도구를 선택할 때는 사용자 정의 기능, 특수 상황 처리, 성능 및 사용 편의성에주의하십시오. 일반적으로 사용되는 도구 유형에는 온라인 도구, IDE 플러그인 및 명령 줄 도구가 포함됩니다.

XML 구조가 유연하고 다양하기 때문에 모든 XML 파일을 PDF로 변환 할 수있는 앱은 없습니다. XML에서 PDF의 핵심은 데이터 구조를 페이지 레이아웃으로 변환하는 것입니다. XML을 구문 분석하고 PDF를 생성해야합니다. 일반적인 방법으로는 요소 트리와 같은 파이썬 라이브러리를 사용한 XML 및 ReportLab 라이브러리를 사용하여 PDF를 생성하는 XML을 구문 분석합니다. 복잡한 XML의 경우 XSLT 변환 구조를 사용해야 할 수도 있습니다. 성능을 최적화 할 때는 멀티 스레드 또는 멀티 프로세스 사용을 고려하고 적절한 라이브러리를 선택하십시오.
