numpy模块的用法

数组的创建:
array

array(p_object, dtype=None, copy=True, order='K', subok=False, ndmin=0)

object: 数组或嵌套的数列
dtype 数组元素的数据类型,可选
copy 对象是否需要复制,可选
order 创建数组的样式,C 为行方向,F 为列方向,A 为任意方向(默 认)
subok 默认返回一个与基类类型一致的数组 ndmin 指定生成数组的最小维度

#array创建数组
#导入numpy
import numpy as np
#使用array函数创建一维数组
a = np.array([1,2,3,4])
print(a)
print(type(a))
#使用array函数创建二维数组
b = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(b)
print(type(b))
#使用array函数创建三维数组
c = np.array([[[1,2,3],[4,5,6],[7,8,9]],[['a','b','c'],['d','e','f'],['h','i','g']]])
print(c)
print(type(c))
#array函数中dtype的使用
d = np.array([3,4,5],dtype=float)
print(d)
print(type(d))
#设置传入数据的类型,int,float,string

#array函数中ndmin的使用,设置维度
e = np.array([5,6,7],dtype=float,ndmin=3)
print(e)
print(type(e))

arrange创建数组
start 起始值,默认为 0
stop 终止值(不包含)
step 步长,默认为 1
dtype 返回 ndarray 的数据类型,如果没有提供,则会使用输入数据的类型

#arrange创建数组
import numpy as np
#range的使用
#range(start,end,step) 包括start,不包括end,
# 默认从0开始,步长1
a = list(range(1,10,2))
print(a)
#arrange创建数组
#arange([start,] stop[, step,], dtype=None)
#创建1-11的数组
b = np.arange(1,11)
print(b)
#设置步长,指定float
c = np.arange(1,11,2,dtype = float)
print(c)

创建随机数

#随机数创建
import numpy as np
#使用random创建数组[0.0,1.0)
# 实际上是random_sample
def randomTest():
    # 创建一维数组
    a = np.random.random(size=5)
    print(a)
    # 创建二维数组,指定行列,三行四列
    b = np.random.random(size=(3, 4))
    print(b)
    # 创建三维数组,指定行列个数,两个三行四列
    c = np.random.random(size=(2, 3, 4))
    print(c)
#randomTest()
#随机整数
def randomintTest():
    #randint(low, high=None, size=None, dtype=None)
    #[low,high),low默认从0开始
    #生成0-5随机整数,3维
    a = np.random.randint(5,11,size=(2,4,3))
    print(a)
    #dtype的使用
    b = np.random.randint(5,11,size=(2,4,3),dtype=np.int64)
    print('默认的dtype',b.dtype)#默认的dtype int32
    #一般不对dtype进行设置
#randomintTest()

#创建正态随机数
def randnTest():
    a = np.random.randn(4)
    print(a)
    #创建两个两行三列标准正态数据
    b = np.random.randn(2,2,3)
    print(b)
#randnTest()

#创建指定期望方差的标准正态分布数据
#正态分布(高斯分布)loc:期望 scale:方差 size:形状
def normalTest():
    #normal(loc=0.0, scale=1.0, size=None)
    #两个三行四列期望1方差2
    a = np.random.normal(1,2,size=(2,3,4))
    print(a)
normalTest()

ndarray对象的属性
NumPy 最重要的一个特点是其 N 维数组对象 ndarray,它是一系列同类型数据的集 合,以 0 下标为开始进行集合中元素的索引。
ndarray 对象是用于存放同类型元素的多维数组。
ndarray 中的每个元素在内存中都有相同存储大小的区域。
ndarray 内部由以下内容组成:
一个指向数据(内存或内存映射文件中的一块数据)的指针。
数据类型或 dtype,描述在数组中的固定大小值的格子。
一个表示数组形状(shape)的元组,表示各维度大小的元组。

ndarray.ndim: 秩,即轴的数量或维度的数量
ndarray.shape :数组的维度,对于矩阵,n 行 m 列
ndarray.size :数组元素的总个数,相当于 .shape 中 n*m 的值
ndarray.dtype :ndarray 对象的元素类型 ndarray.itemsize: ndarray 对象中每个元素的大小,以字节为单位
ndarray.flags :ndarray 对象的内存信息
ndarray.real :ndarray 元素的实部
ndarray.imag: ndarray 元素的虚部
ndarray.data: 包含实际数组元素的缓冲区,由于一般通过数组的索引获取元素,所以通常不需要使用这个属性。

其他方式创建:
zeros创建指定大小的数组,数组元素以 0 来填充:

#其他方式创建数组
import numpy as np
#zeros(shape, dtype=None, order='C')
def zeros_test():
    a = np.zeros(5)
    print(a)
    #[0. 0. 0. 0. 0.]
    b = np.zeros((5,),dtype=int)
    #一维,5个,[0 0 0 0 0]
    print(b)
    #创建二维数组
    # [[0. 0. 0. 0.]
     #[0. 0. 0. 0.]
     #[0. 0. 0. 0.]]
    c = np.zeros((3,4))
    print(c)
#zeros_test()
#ones用1填充
#ones(shape, dtype=None, order='C')
def ones_test():
    a= np.ones(10)
    print(a)
    b = np.ones((2,5),dtype=int)
    print(b)
#ones_test()

#numpy.empty 方法用来创建一个指定形状(shape)、
# 数据类型(dtype)且未初始化的 数组,
# 里面的元素的值是之前内存的值
def empty_test():
    #empty(shape, dtype=None, order='C')
    # 有"C"和"F"两个选项,分别代表,行优先和列优先,
    # 在计算机内存中的存储元素的顺序。
    a = np.empty((2,5))
    print(a)
#empty_test()

#创建等差数列
def linspace_test():
    #linspace(start, stop, num=50, endpoint=True,
    #  retstep=False, dtype=None,axis=0)
    #起,终,个数,endpoint = True 表示结尾点也算进来
    x = np.linspace(1,10,10)
    print(x)
#linspace_test()
#创建等比数列
def logspace_test():
    #logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None,
     #        axis=0)
    #base 比例,对数log的底数,start-stop是log的次方数
    a = np.logspace(0,6,num=7,base=2)
    print(a)
logspace_test()

二维数组的切片和索引

#索引的使用
x=np.arange(1,13)
#对数组修改形状
a=x.reshape((4,3))
print('数组元素')
print(a)
#使用索引获取
#获取第三行
print(a[2])
#获取第二行第三列
print(a[1,2])
#切片的使用[行进行切片,列进行切片][start:stop:step,start:stop:step]
#获取所有行所有列
print(a[:,:])
#获取所有行部分列
print(a[:,1])
#获取所有行部分列,所有行第1,2列
print(a[:,:2])
#获取奇数行,第2,3,列
print(a[::2,1:3])
#使用坐标获取数据
#同时获取第三行第二列,第四行第一列')
print(np.array((a[2,1],a[3,0])))
print(a[(2,3),(1,0)])
#行列都倒叙
print(a[::-1,::-1])

复制

#数组得复制
import numpy as np
#创建一个二维数组
a= np.arange(1,13).reshape((3,4))
print(a)
#对a数组进行切片处理,获取第12行,12列
sub_a = a[:2,:2]
print(sub_a)
#对sub_a中第一行第一列得值进行修改
sub_a[0][0] = 100
print(sub_a)
print(a)
#切片后相当于做了浅拷贝,对切片后数组进行修改后
#会影响原来得数组

#可以使用Numpy中得copy方法进行深拷贝

sub_aa =np.copy(a[:2,:2]) #深拷贝
sub_aa[0,0] =200
print(sub_aa)
print(a)

改变维度

import numpy as np
#创建一个一维数组
a = np.arange(24)
print(a)
#通过reshape将一维数组修改为二、三维
#一改二
a1 = a.reshape(3,8)
a1 = a.reshape((3,8))
print(a1)
#一改三
a2 = a.reshape(2,3,4)
a2 = a.reshape((2,3,4))
print(a2)
#通过np.reshape
#reshape(a, newshape, order='C')
b = np.reshape(a,(2,3,4))
print('b:')
print(b)
#将多维数组修改为一维
c = b.reshape(24)
c = b.reshape(-1)
print(c)
#ravel多维换一维
d = b.ravel()
print('d')
print(d)
#flatten多维换一维
e = b.flatten()
print('e')
print(e)

数组得拼接
水平方向:hstack(A,B)
垂直方向: vstack(A,B)
numpy.concatenate((a1,a2,…),axis)
axis=0默认垂直
axis=1水平方向
三维数组有三个轴,axis=012,
axis=0 可以使用vstack 替换
axis=1 可以使用hstack 替换
axis=2 可以使用dstack 替换

数组得分割
numpy.split(ary,indices_or_sections,axis)
ary:被分割的数组
indices_or_sections:如果是一个整数,就用该数平均切分,如果是一个数组,为沿轴切分的
位置。
axis:沿着哪个维度进行切向,默认为 0,横向切分。为 1 时,纵向切分。

二维数组进行分割
numpy.hsplit (X,[1,2],axis=0)函数可以水平分隔数组
第 1 个参数表示待分隔的数组
第 2 个参数表示要将数组水平分隔成几个小数组
第三个参数确定方向
vsplit 函数可以垂直分隔数组

数组的转置
transpose进行转置

算数函数
add(),subtract(),multiply() 和 divide()
如果参与运算的两个对象 都是 ndarray,并且形状相同,那么会对位彼此之间进行(+*/)运算
NumPy 提供了标准的三角函数:sin()、cos()、tan()。
numpy.around(a,decimals)
a: 数组
decimals: 舍入的小数位数。 默认值为 0。 如果为负,整数将四舍五入到小数点左侧的位置 numpy.floor() 返回数字的下舍整数。 numpy.ceil() 返回数字的上入整数。
np.sum() 求和
np.prod() 所有元素相乘
np.mean() 平均值
np.std() 标准差
np.var() 方差
np.median() 中数
np.power() 幂运算
np.sqrt() 开方
np.min() 最小值
np.max() 最大值
np.argmin() 最小值的下标
np.argmax() 最大值的下标
np.inf 无穷大
np.exp(10) 以 e 为底的指数
np.log(10) 对数
numpy.power() 函数将第一个输入数组中的元素作为底数,计算它与第二个输入数组中相应
元素的幂。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值