Python开发:NumPy学习(一)ndarray数组

一、数据维度

  一个数据表达一个含义,一组数据表达一个或多个含义。

  数据维度概念:一组数据的组织形式,其中有一维数据、二维数据、多维数据、高维数据。

  1、  一维数据

  一维数据由对等关系的有序或无序数据构成,采用线性方式组织。

  对应:列表、集合

#列表有序
[1,2,3,4,5]
#集合无序
{1,2,3,4,5}

  2、二维数据

  二维数据由多个一维数据构成,是一维数据的组合形式。

  对应:列表

[[1,2,3],[4,5,6]]

  3、多维数据

  多维数据由一维或二维数据在新维度上扩展形成。

  对应:列表

[[[1],[2],[3]],[[4],[5],[6]],[[7],[8],[9]]]

  4、高维数据

  高维数据仅使用最基本二元关系展示数据间的复杂结构。

  对应:字典或数据表示格式

#字典一一对应为二元关系
dict={
          "x1":"1",
          "y1":"2",
     }

  数据表示格式:JSON、XML、YAML等格式

二、NumPy

  1、简介

  NumPy是一个开源的科学计算基础库,是SciPy、Pandas等数据处理或科学计算库的基础。

  2、主要功能:

  (1)、提供了一个强大的N维数组对象ndarray

    优点:

    1、数组对象可以去掉元素间运算所需的循环,使一维向量更像单个数据。

    2、设置专门的数组对象,经过优化可以提升这类应用的运算速度。

    3、数组对象采用相同的数据类型,有助于节省运算和存储空间。

    实例:

import numpy as np
a=np.array([1,2,3,4,5])
b=np.array([6,7,8,9,10])
c=[]
c=a**2+b**2
print(c)

    

  (2)、提供了一组广播功能相关的函数,用来在数据间进行计算;

  (3)、整合了C/C++/Fortran代码,并提供整合工具;

  (4)、提供了线性代数、傅里叶变换、随机数生成等功能用于科学计算。

三、ndarray:

  多维数组,由实际数据和描述这些数据的元数据(数据维度、数据类型)两部分构成。

  一般要求所有元素类型相同,数组下标从0开始。

  np.array()可以生成一个ndarray数组,输出成[]形式,元素由空格分割。

  两个属性:

  轴(axis):保存数据维度;秩(rank):轴的数量  

  ndarray对象的属性:

  1、ndim:秩,轴数量或维度数量

import numpy as np
a=np.array([[1,2,3,4,5],[6,7,8,9,10]])
print(a.ndim)

  

  2、shape:ndarray对象尺度,即n行m列

import numpy as np
a=np.array([[1,2,3,4,5],[6,7,8,9,10]])
print(a.shape)

  

  3、size:ndarray对象元素个数,为shape中n*m

import numpy as np
a=np.array([[1,2,3,4,5],[6,7,8,9,10]])
print(a.size)

  

  4、dtype:ndarray对象的元素的类型

import numpy as np
a=np.array([[1,2,3,4,5],[6,7,8,9,10]])
print(a.dtype)

  

  5、itemsize:ndarray对象中每个元素大小

import numpy as np
a=np.array([[1,2,3,4,5],[6,7,8,9,10]])
print(a.itemsize)

  

四、ndarray的相关操作

1、创建:

  (1)、从Python中的列表、元组等

import numpy as np
#不声明数据类型,创建时会自动读取类型
nd=np.array(list/tuple)
import numpy as np
#声明数据类型
nd=np.array(list/tuple,dtype=np.int32)

  (2)、使用NumPy中函数

函数 说明
arange(n) 返回ndarray类型,元素从0到n-1
ones(shape) 根据shape生成一个全1数组
zeros(shape) 根据shape生成全0数组
full(shape,value) 根据shape生成一个数组,每元素值全为value
eye(n) 一个正方形的n*n单位矩阵,对角线为1,其余为0
ones_like(a) 根据数组a的形状生成一个全1数组
zeros_like(a) 根据数组a的形状生成一个全0数组
full_like(a,value) 根据数组a的形状生成一个数组,每元素值全为value
linspace() 根据起止数据等间距地填充数据,形成数组
concatenate() 根据两个或多个数组合并成一个新数组

  arange函数默认是整数类型,其他函数默认为float类型,np.ones((1,2),dtype=np.int32)将ones生成的数组类型为int32。

  举例:

  【2,20】linspace前闭合后闭合等分:

import numpy as np
nd=np.linspace(2,20,10)
print(nd)

  

  

  添加endpoint=Flase,【2,20)linspace前闭合后开放等分:

import numpy as np
nd=np.linspace(2,20,10,endpoint=False)
print(nd)

  

  concatenate合并:

import numpy as np
nd=np.linspace(2,20,10)
nd2=np.linspace(2,10,3)
nd3=np.concatenate((nd,nd2))
print(nd3)

  

  (3)、从字节流中

  (4)、从文件中读取特定格式

2、变换

  (1)、维度变换

  reshape(不改变原数组)

import numpy as np
nd=np.full((2,4,8),6)
a=nd.reshape((8,8))
print(a)
print()
print(nd)

  

  resize(改变原数组)

import numpy as np
nd=np.full((2,4,8),6)
print(nd)
print()
nd.resize((8,8))
print(nd)

  

  (2)、元素类型变换

  astype(返回一个新数组)

import numpy as np
nd=np.full((2,4,8),6,dtype=int)
print(nd)
nd2=nd.astype(np.float)
print()
print(nd2)

  

  (3)、ndarray数组转化成列表

  tolist()

import numpy as np
nd=np.full((2,4,2),1)
print(nd)
nd2=nd.tolist()
print()
print(nd2)

  

3、索引

  获取数组中特定位置元素的过程。

  一维:和python列表的索引方式相同

  多维:nd[x,y,z]

import numpy as np
nd=np.arange(18).reshape((2,3,3))
print(nd)
print("索引的元素为:"+str(nd[1,2,2]))

  

4、切片

  获取数组元素子集的过程

  一维:和python列表的切片方式相同

  多维:

import numpy as np
nd=np.arange(18).reshape((2,3,3))
print(nd)
print("切出来的:")
print(nd[:,:,::2])

  

5、运算

  数组与标量间的计算则为数组中每个元素与标量的计算。

  示例:

import numpy as np
nd=np.arange(18).reshape((2,3,3))
print(nd)
nd=nd/2
print("运算结果:")
print(nd)

  

  函数如下:

函数  说明 

abs(n)

fabs(n)

计算数组各元素的绝对值 
 sqrt(n) 计算数组各元素的平方根 
 square(n) 计算数组各元素的平方 
 rint(n) 各元素四舍五入 
 modf(n) 各元素的整数和小数部分分成两个独立数组 
 cos(n) 三角函数 
 exp(n) 各元素指数值 
 sign(n) 各元素的符号值,正数显示+,负数显示-,0显示0 
 log(n) 计算各元素对数 

ceil(n)

floor(n)

计算各元素ceiling值或floor值 

原文地址:https://www.cnblogs.com/guobin-/p/11211653.html

时间: 2024-10-08 17:58:03

Python开发:NumPy学习(一)ndarray数组的相关文章

『Python』Numpy学习指南第十章_高端科学计算库scipy入门(系列完结)

简介: scipy包包含致力于科学计算中常见问题的各个工具箱.它的不同子模块相应于不同的应用.像插值,积分,优化,图像处理,,特殊函数等等. scipy可以与其它标准科学计算程序库进行比较,比如GSL(GNU C或C++科学计算库),或者Matlab工具箱.scipy是Python中科学计算程序的核心包;它用于有效地计算numpy矩阵,来让numpy和scipy协同工作. 在实现一个程序之前,值得检查下所需的数据处理方式是否已经在scipy中存在了.作为非专业程序员,科学家总是喜欢重新发明造轮子

python中numpy学习

NumPy的主要对象是同种元素的多维数组.这是一个所有的元素都是一种类型.通过一个正整数元组索引的元素表格(通常是元素是数字).在NumPy中维度(dimensions)叫做轴(axes),轴的个数叫做秩(rank). 例如,在3D空间一个点的坐标 [1, 2, 3] 是一个秩为1的数组,因为它只有一个轴.那个轴长度为3.又例如,在以下例子中,数组的秩为2(它有两个维度).第一个维度长度为2,第二个维度长度为3. [[ 1., 0., 0.], [ 0., 1., 2.]] NumPy的数组类被

『Python』Numpy学习指南第五章_矩阵和通用函数

简单的矩阵生成以及合并操作: np.mat('1 2 3;4 5 6;7 8 9')np.bmat('A B;B A')np.arange(1,10).reshape(3,3) 1 import numpy as np 2 3 4 5 '''通用函数''' 6 7 # 字符串创建矩阵 8 # 也可以使用数组创建 9 A = np.mat('1 2 3;4 5 6;7 8 9') 10 # 数组创建矩阵 11 A = np.mat(np.arange(1,10).reshape(3,3)) # n

『Python』Numpy学习指南第九章_使用Matplotlib绘图

坐标轴调节以及刻度调节参见:『Python』PIL&plt图像处理_矩阵转化&保存图清晰度调整 数据生成: 1 import numpy as np 2 import matplotlib.pyplot as plt 3 4 func = np.poly1d(np.array([1,2,3,4])) 5 func1 = func.deriv(m=1) # 求一阶导数 6 func2 = func.deriv(m=2) # 求二阶导数 7 8 x = np.linspace(-10,10,3

『Python』Numpy学习指南第三章__常用函数

感觉心情渐渐变好了,加油! np.eye(2)np.savetxt('eye.txt',i2)c,v = np.loadtxt('data.csv', delimiter=',', usecols=(6,7), unpack=True) 1 # __*__coding=utf-8__*__ 2 3 import numpy as np 4 5 # 单位矩阵生成 6 i2 = np.eye(2) 7 print(i2) 8 9 # 保存为txt 10 np.savetxt('eye.txt',i2

Python:Numpy学习

1 import numpy as np 2 # 基础属性 3 array = np.array([[[1,2,3], [0,0,1]], [[1,2,3], [0,0,1]]], 4 dtype = np.int64) 5 6 print(array) 7 print(array.ndim) # number of dim 8 print(array.shape) # shape 9 print(array.size) # number of elements 10 print(array.d

Numpy学习二:数组的索引与切片

1.一维数组索引与切片#创建一维数组arr1d = np.arange(10)print(arr1d) 结果:[0 1 2 3 4 5 6 7 8 9] #数组的索引从0开始,通过索引获取第三个元素arr1d[2] 结果:2 #切片,左闭右开区间,从索引3开始,直到索引7结束 arr1d[3:8] 结果:array([3, 4, 5, 6, 7]) #数组脚标由右往左是从-1开始,每向左一位脚标数字减1,获取最后一个元素arr1d[-1] #等价arr1d[9] 结果:9 #将标量赋值给切片,会

Numpy学习三:数组运算

1.转置 #reshape(shape)函数改变数组形状,shape是一个元组,表示数组的形状 创建一个包含15个元素的一维数组,通过reshape函数调整数组形状为3行5列的二维数组arr = np.arange(15).reshape((3,5))print(arr) 结果:[[ 0  1  2  3  4]            [ 5  6  7  8  9]            [10 11 12 13 14]] #转置,数组转置可以使用transpose方法或者T属性,转置返回的是

NumPy学习:创建ndarray数组(linespace,arange,uniform,normal)

""" 创建ndarray数组(linespace,arange,uniform,normal) """ import numpy as np print("linespace:", np.linspace(0, 100, 5)) # 等间隔的序列 print("arange:", np.arange(10, 50, 10)) # 每间隔10 print("uniform:", np.r