numpy常用总结

numpy常用总结,第1张

numpy常用总结

一些numpy库中常用基础总结,欢迎指正

# 一、numpy库

# 创建数组对象
# 1、利用array函数创建数组对象
import numpy as np
# 1.1 #列表类型
data1=[1,2,3,4]      #列表
data1=np.array(data1)
print(data1)

# 1.2 #元组类型
data2=(1,2,3,4)     #元组
data2=np.array(data2)
print(data2)

# 1.3 #多维数组
data3=[[1,2,3,4],[1,2,3,4]]     #多维数组
data3=np.array(data3)
print(data3)
# ndim:数组的维度
print(data3.ndim)

# 2、使用专门创建数组的函数
#2.1、常用arrange函数——类似于python原生range函数
demo_np=np.arange(10)
print(demo_np)

# 2.2、arange创建等差一维数组——不包括终止值默认前闭后开
# linspace创建等差一维数组——包括终止值前闭后闭,第三个参数为创建等差的值的个数
# 格式:np.arange(start, stop, step, dtype)
# arange创建等差一维数组
demo_np=np.arange(0,1,0.2)
print(demo_np)
# linspace创建等差一维数组
demo_np=np.linspace(0,1,5)
print(demo_np)
# logspace创建等比一维数组
demo_np=np.logspace(0,1,5)
print(demo_np)

# 2.3、zeros函数:创建指定长度或形状的全0数组
# 格式:np.zeros(shape, dtype=float, order='C')
# 一维
demo_np=np.zeros(4)
print(demo_np)
# 多维
demo_np=np.zeros([4,4])
print(demo_np)

# 2.4、ones函数:创建指定长度或形状的全1数组
# 格式:np. ones(shape, dtype=None, order='C')
# 一维
demo_np=np.ones(4)
print(demo_np)
# 多维
demo_np=np.ones([4,4])
print(demo_np)

# 2.5、diag函数创建对角矩阵
demo_np=np.diag([1,2,3,4])
print(demo_np)

# 2.6、shape函数查看数组的形状
demo_np=np.shape(demo_np)
# demo_np=demo_np.shape
print(demo_np)

# 2.7 size函数查看元素个数
demo_np=np.diag([1,2,3,4])
demo_np=np.size(demo_np)
print(demo_np)

# 2.8 dtype函数查看数据类型
demo_np=np.diag([1,2,3,4])
print(demo_np.dtype)

# 2.9 astype函数(np.数据类型)——数据类型转换
demo_np=demo_np.astype(np.float64)
print(demo_np.dtype)

# 2.10 random模块生成随机数
# randint函数生成随机整数 -最小最大值和维度三个参数
demo_random=np.random.randint(5,10,size=(2,4))
print(demo_random)

# 3、数组重塑
# 对于定义好的数组,可以通过reshape方法改变其数据维度。
# 格式:a.reshape(newshape)
# 3.1、reshape方法重塑数组
demo_reshape=np.arange(10)
print(demo_reshape)
demo_reshape=demo_reshape.reshape(2,5)
print(demo_reshape)

# 3.2、数组合并
# hstack函数:实现横向合并——行必须一致
# vstack函数:实现纵向组合是利用vstack将数组纵向合并——列必须一致
# concatenate函数:可以实现数组的横向或纵向合并,参数axis=1时进行横向合并,axis=0时进行纵向合并。
a1=np.arange(10).reshape(2,5)
a2=a1*2
print(a2,'n',a2)
demo_concatenate=np.concatenate((a1,a2),axis=1)
print(demo_concatenate)
demo_concatenate=np.concatenate((a1,a2),axis=0)
print(demo_concatenate)
# hstack和vstack函数实现方法相同np.

# 3.3、数组分割
# 与数组合并相反,hsplit函数、vsplit函数和split函数分别实现数组的横向、纵向和指定方向的分割。
# split函数:可以实现数组的横向或纵向分割,参数axis=1时进行横向合并,axis=0时进行纵向合并。
s1=np.arange(16).reshape(4,4)
print(s1)
# hsplit函数:实现横向分割;
demo_hsplit=np.hsplit(s1,2)
print(demo_hsplit)
# vsplit函数:实现纵向分割;
demo_vsplit=np.vsplit(s1,2)
print(demo_vsplit)
# print(type(demo_vsplit))


# 4、数组的索引和切片
# 4.1 一维数组的索引
demo_index=np.arange(10)
print(demo_index)
index_2=demo_index[0]
print(index_2)
# 切片
print(demo_index[1:5])#---用冒号
# 单独切片返回的是视图
demo_index[1:5]
print(demo_index)

# 4.2 多维数组的索引
demo_index=np.arange(10).reshape(2,5)
# 某一范围的索引   前开后闭
index1=demo_index[0,1:3]
print(index1)
index2=demo_index[:,1:2]
print(index2)
# print(type(index2))
# 对于某一具体位置或某一范围的索引
index3=demo_index[1,(0,2)]
print(index3)

# 总结:
# 1.如果数组是一维的,那么索引和切片就和python的列表是一样的。
# 2.如果是二维的,那么再中括号中给两个值,两个值是通过逗号分割,逗号前表示是行,逗号后表示是列。如果中括号只有一个值,那么就代表的是行。
# 3.如果是二维数组,那么行和列的部分都遵循一维数组的方式,可以使用整形,切片,还可以使用中括号等形式来索引没有规律的元素。
# 4.布尔索引是通过相同数组上的True还是False来提取的。提取的条件可以有多个,那么如果有多个,可以使用&和|,每个条件要用圆括号括起来。


# 5、数组的运算
# 5.1. 常用的ufunc函数运算
x=np.array([1,2,3])
y=np.array([1,2,3])
sum=x+y
print(sum)
reduce=x-y
print(reduce)
moti=x*y
print(moti)
divide=x/y
print(divide)

# 5.2 ufunc函数的广播机制
# 如果两个数组的后缘维度(即从末尾开始算起的维度)的轴长度相符或者其中一方的长度为1,则认为他们是广播兼容的。
# 广播会在缺失维度和长度为1的维度上进行。

func=np.array([[1,2,3,4],[1,2,3,4],[1,2,3,4]])
add=[1,1,1,1]
print(func)
demo_func=func+add
print(demo_func)

# 5.3 排序
# Sort函数对原数组直接进行排序。--注意:直接排序,调用改变原始数组
# 格式:numpy.sort(a, axis, kind, order)
# 带轴向参数的sort排序
r1=np.array([[1,5,3,8],[2,4,1,0]])
r1.sort(axis=1)     #沿横向排序
print(r1)
r1.sort(axis=0)     #纵向向排序
print(r1)


# 6、重复数据与去重
# 在NumPy中,对于一维数组或者列表,unique函数去除其中重复的元素,
# 并按元素由小到大返回一个新的元组或者列表。
# 数组内数据去重。
# unique函数调用后原数组不会改变
d1=np.array([1,2,3,4,2,3,1,1,1])
np.unique(d1)
print("直接调用unique方法返回原数组:",d1)
print("去重后数组:",np.unique(d1))

# 7、常用统计函数
arr=np.arange(10).reshape(2,5)
np.sum(arr)    #数组求和
np.sum(arr,axis=0)  #数组纵轴求和
np.sum(arr,axis=1)  #数组横轴求和
np.mean(arr)    #数组均值
np.mean(axis=0)     #数组纵轴均值
np.std(arr)     #数组标准差
np.std(arr,axis=0)     #数组纵轴标准差






欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5671324.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存