Numpy库及ndarrary基础知识

Numpy简介

Numpy是一个开源的Python科学计算基础库。

  • 一个强大的N维数组对象 ndarray
  • 广播功能函数
  • 整合C/C++/Fortran代码的工具
  • 线性代数、傅里叶变换、随机数生成等功能

Numpy是SciPy、Pandas等数据处理或科学计算库的基础。

Numpy的引用:

import numpy as np

引用使用别名np,尽管别名可以省略或更改,建议使用上述约定的别名。

N维数组对象:ndarray

例:计算A2+B3,其中,A和B是一维数组

def pySum():
    a=[0,1,2,3,4]
    b=[9,8,7,6,5]
    c=[]
    for i in range(len(a)):
        c.append(a[i]**2 + b[i]**3)
    return c
print(pySum())
import numpy as np
def npSum():
    a=np.array([0,1,2,3,4])
    b=np.array([9,8,7,6,5])
    c=a**2+b**3
    return c
print(npSum())

第二种方法使用Numpy库直接给出a,b两个数组即可,然后计算得到结果,不需要写循环。

数组对象可以去掉元素间运算所需的循环,使一维向量更像单个数据。
设置专门的数组对象,经过优化,可以提升这类应用的运算速度。
科学计算中,一个维度所有数据的类型往往都相同。数组对象采用相同的数据类型,有助于节省运算和存储空间。

N维数组对象:ndarray

ndarray是一个多维数组对象,由两部分构成:实际数据、描述这些数据的元数据(数据维度、数据类型等)
ndarray数组一般要求所有元素类型相同(同质),数组下标从0开始。

np.array()生成一个ndarray数组,ndarray在程序中的别名是array。np.array()输出成[]形式,元素由空格分割。

ndarray对象的属性:

属性 说明
.ndim 秩,即轴的数量或维度的数量
.shape ndarray对象的尺度,对于矩阵,n行m列
.size ndarray对象元素的个数,相当于.shape中n*m的值
.dtype ndarray对象的元素类型
.itemsize ndarray对象中每个元素的大小,以字节为单位
In[1]:
import numpy as np
arr1=np.array([1,2,3,4])
print('创建的数组为:',arr1)
arr2=np.array([[1,2,3,4],[2,3,4,5]])
print(arr2)

Out[1]:
创建的数组为: [1 2 3 4]
[[1 2 3 4]
 [2 3 4 5]]

In[2]:
arr2.shape#查看数组结构

Out[2]:
(2, 4)

In[3]:
arr2.dtype#查看数组类型
Out[3]:
dtype('int32')

In[4]:
arr2.size#查看数组元素个数
Out[4]:
8

In[5]:
arr2.itemsize#查看数组每个元素大小
Out[5]:
4

In[6]:
arr2.ndim#数组的维度
Out[6]:
2

ndarray的元素类型:

数据类型 说明
bool 布尔类型,True或False
intc 与C语言中的int类型一致,一般是int32或int64
intp 用于索引的整数,与C语言中ssize_t一致,int32或int64
int8 字节长度的整数,取值:[-128,127]
int16 16位长度的整数,取值:[-32768, 32767]
int32 32位长度的整数,取值:[-231, 232-1]
int64 64位长度的整数,取值:[-263, 263-1]
uint8 8位无符号整数,取值[0,255]
uint16 16位无符号整数,取值:[0,65535]
uint32 32位无符号整数,取值:[0,232-1]
uint64 64位无符号整数,取值:[0,264-1]
float16 16位半精度浮点数:1位符号位,5位指数,10位尾数
float32 32位半精度浮点数:1位符号位,8位指数,23位尾数
float64 64位半精度浮点数:1位符号位,11位指数,52位尾数
complex64 复数类型,实部和虚部都是32位浮点数
complex128 复数类型,实部和虚部都是64位浮点数

对比:Python语法仅支持整数、浮点数和复数3种类型
科学计算涉及数据较多,对存储和性能都有较高要求。
对元素类型精细定义,有助于NumPy合理使用存储空间并优化性能。
对元素类型精细定义,有助于程序员对程序规模有合理评估。

ndarray数组可以由非同质对象构成。非同质ndarray元素为对象类型。

非同质ndarray对象无法有效发挥Numpy优势,尽量避免使用。

In[7]:
x=np.array([[0,1,2,3,4],[9,8,7,6]])
x.shape
Out[7]:
(2,)

In[8]:
x.dtype
Out[8]:
dtype('O') #O类型表示对象,元素维度数据不同,将每个元素都视为一个对象

In[9]:
x
Out[9]:
array([list([0, 1, 2, 3, 4]), list([9, 8, 7, 6])], dtype=object)

创建ndarray数组

  • 从Python中的列表、元组等类型创建ndarray数组
x=np.array(list/tuple)
x=np.array(list/tuple, dtype=np.float32)
  • 使用Numpy中函数创建ndarray数组,如:arange(注意,不是arrange!!!),ones,zeros等
In[1]: np.arange(0,1,0.1)	#产生有起点和终点的固定步长的数组,起点默认0,步长默认1
Out[1]: array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9])

In[2]: np.linspace(0,1,12) #产生12个[0,1]区间的数
Out[2]: array([0.        , 0.09090909, 0.18181818, 0.27272727, 0.36363636,
       0.45454545, 0.54545455, 0.63636364, 0.72727273, 0.81818182,
       0.90909091, 1.        ])

In[3]: np.logspace
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值