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)     #数组纵轴标准差






### Numpy常用函数总结 #### 数组创建 `numpy.array()` 是最基础的用于创建数组的方法。它接受列表或其他序列类型的输入并将其转换为 ndarray 对象[^1]。 ```python import numpy as np arr = np.array([1, 2, 3]) print(arr) ``` 除了 `array()` 方法外,还有其他一些方法可用于快速生成特定结构的数组: - `np.zeros(shape)` 创建指定形状的零矩阵。 - `np.ones(shape)` 创建全一矩阵。 - `np.empty(shape)` 返回未初始化的数据。 - `np.arange(start, stop, step)` 类似于内置的 range 函数,但返回的是 ndarray。 - `np.linspace(start, stop, num=50)` 在指定范围内均匀分布一定数量的样本点。 #### 数据类型与属性 NumPy 支持多种数据类型 (dtype),可以通过 `.dtype` 属性查看当前数组的数据类型;通过 `.shape`, `.ndim`, 和 `.size` 获取数组维度、维数以及总元素数目等基本信息。 #### 数学运算 Numpy 提供了大量的数学功能,包括但不限于三角函数 (`sin`, `cos`)、指数对数(`exp`, `log`) 等基本算术操作可以直接作用在整个数组上而无需显式循环。 例如计算平方根: ```python sqrt_arr = np.sqrt(np.array([4, 9])) print(sqrt_arr) # 输出 [2. 3.] ``` 另外提到过可以用 `numpy.dot()` 或者 @ 运算符来进行向量间的点乘操作。 #### 统计分析 统计相关的函数有最大最小值查找(`max`, `min`), 平均值(`mean`), 方差标准差(`std`, `var`)等等。 示例找出二维数组每列的最大值: ```python col_maxes = np.max([[1, 2], [3, 4]], axis=0) print(col_maxes) # 结果应该是 array([3, 4]) ``` #### 文件读写 保存加载文本或二进制文件也很方便,比如使用 `save/load` 处理 .npy/.npz 格式的压缩存档。 --- ### 关联概念补充说明 Python 的垃圾回收机制采用 **引用计数** 来跟踪内存中的对象状态,在某些场景下可能会因为隐含的对象共享而导致预期之外的行为发生,因此理解其工作原理有助于调试复杂应用环境下的资源泄漏等问题[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值