Numpy基本用法

《利用Python进行数据分析》笔记

1. 创建数组ndarray

  1. ndarray是N维数组对象, 快速而灵活的大数据集容器
  2. 其中所有元素的数据类型必须是相同的
  3. ndarray包括shape属性(各维度大小的元组)和dtype属性(数组数据类型)
ndarray创建函数特点
array支持列表,元组,数组或其他序列类型,可推断也可指定dtype
arange相当于range,返回ndarray而非列表
zeros,zeros_like指定shape和dtype创建数组,以0填充;like表示以另一数组做参数创建
ones,ones_like同上,以1填充
empty,empty_like同上,无填充
eye,identity功能相同参数不同,创建N阶单位矩阵(仅对角线为1,其余为0)
import numpy as np
# 创建基本数组
data1 = [6, 7.5, 8, 0, 1]
data2 = [[1, 2, 3, 4], [5, 6, 7, 8]]
arr1 = np.array(data2)
arrShape = arr1.shape  # 数组大小(行,列)
arrDtype = arr1.dtype  # 数组数据类型
print(f"数组:{arr1}\n数字大小:{arrShape}\n数组数据类型:{arrDtype}\n")
# 创造随机数的数组
from numpy.matlib import randn
arr=randn(3,2)#三行二列的正态分布随机数数组,平均值0,标准差1
# 创建特殊数组
arr2=np.zeros((2,3))#创建一个以0填充的2行3列数组
print(arr2)

2. ndarray常用数组数据类型

数据类型形式简写的类型代码
浮点数float16,float32,float64,float128f2,f4,f8,f16
复数complex64,complex128,complex256c8,c16,c32
整数int8,int16,int32,int64i1,i2,i4,i8
布尔值bool?
字符串string_S
普通的Python对象objectO
固定长度的unicodeunicode_U
#查看数据类型dtype
arr=np.array([1,2,3,4,5])
print(arr.dtype)
#数据类型转换方式astype
arr2=arr.astype(np.float32)

3. ndarray索引和切片

  1. 支持类似List的索引和切片
  2. 与List区别在于,ndarray的修改会改变源数组
#索引矩阵按行列索引,[0][0]表示第一行第一列的数据
arr[0][0]
#:表示选取整个横轴,纵轴,数字表示该轴上的切片起始位置
arr[:,:1]
#支持布尔值,判断是否与字符串相等会对每个元素生成True或False
arr == 'hello'
#花式索引,选取第1,3,5行生成新数组,从0开始,支持-1
arr[[1,3,5]]

4. 转置

#T表示转置数组的视图,不会修改
arr.T
#transpose支持高维数组的转置
#swapaxes表示转置条件为几行几列
arr.swapaxes(1,2)

5. 常用函数

一元函数(参数为一个数组)
函数功能
abs,sqrt,square,exp计算每个元素的绝对值,平方根,平方,e指数
log,log10,log2底e,10,2的对数
ceil,floor天花板,地板
sign计算元素符号,1为正,-1为负
rint四舍五入
modf整数和小数分两部分返回
isnan判断是NaN则返回True
isfinite,isinf有穷,无穷
sin,cos,tan,arcsin,arccos,arctan三角函数
二元函数(参数为两个数组)
函数功能
add两个数组对应元素相加
subtract相减
multiply相乘
divide,floor_divide相除,舍弃余数的相除
power第一个参数为底,第二个参数为幂
maximum,fmax比较后返回最大值,fmax忽略NaN
minimum,fmin最小值
mod第一个数组对第二个数组取模
copysign复制第二个数组的符号给第一个数组
greater,greater_equal,less,less_equal,equal,not_equal比较,返回布尔
logical_and,logical_or,logical_xor逻辑,与或非
聚合函数
函数功能
sum全部元素或某个轴元素求和
mean算术平均数
std,var,max,min标准差,方差,最大值,最小值
argmax,argmin最大最小值的索引
cumsum,cumprod所有元素累积和和累积积
集合函数
函数功能
sort,sorted排序,可对某列操作
unique计算唯一元素,返回有序结果
interset1d交集
union1d并集
in1d返回布尔数组,判断两个数组元素是否包含关系
setdiff1d差集
矩阵函数
函数功能
diag将矩阵对角线元素以一位数组形式返回
dot矩阵相乘
trace对角线的和
det行列式
eig方阵的本征值和本征向量
inv方阵的逆
qrQR分解
svd奇异值分解
solve解线性方程
lstsq最小二乘解
随机数生成函数
函数功能
seed种子
shuffle对序列进行随机排列
rand均匀分布
randint给定上下限的随机数
randn正态分布,平均值为0,标准差为1
binomial二项分布
normal正态分布
betaBeta分布
chisquare卡方分布
gammaGamma分布
uniform在0,1之间的均匀分布
### 关于 NumPy基本用法 #### 创建数组 NumPy 中的核心对象是 `ndarray`,即 n 维数组。可以通过多种方式创建这种类型的数组: ```python import numpy as np # 使用 Python 列表来构建一维数组 arr_from_list = np.array([1, 2, 3]) # 构建二维数组 two_dim_arr = np.array([[1, 2], [3, 4]]) # 创建全零矩阵 zeros_matrix = np.zeros((3, 4)) # 创建单位阵 identity_matrix = np.eye(3) # 创建指定范围内的等间距数值序列 range_array = np.arange(start=0, stop=10, step=2) ``` #### 数组属性 了解如何查询和设置数组的一些重要特性对于有效利用这些数据结构至关重要。 - 形状 (shape):表示各维度长度的元组。 - 秩 (rank) 或者轴的数量 (`ndim`) :指明有多少个维度。 - 大小 (size) : 所有元素总数目。 - 数据类型 (`dtype`) : 存储的数据种类。 ```python print(f"Array shape: {two_dim_arr.shape}") print(f"Number of dimensions: {two_dim_arr.ndim}") print(f"Total number of elements: {two_dim_arr.size}") print(f"Data type of each element: {two_dim_arr.dtype}") ``` #### 基础操作 执行简单的数学运算以及统计分析也是 NumPy 功能的一部分。 ```python # 对两个相同尺寸的一维向量做四则运算 vector_a = np.array([7, 8]) vector_b = np.array([9, 10]) addition_result = vector_a + vector_b # 加法 subtraction_result = vector_a - vector_b # 减法 multiplication_result = vector_a * vector_b # 逐元素相乘 division_result = vector_a / vector_b # 浮点除法 # 获取最大值最小值及其位置 max_value_index = two_dim_arr.argmax() min_value_along_axis_0 = two_dim_arr.min(axis=0)[^1] # 广播机制允许不同形状之间的计算 scalar_addition = two_dim_arr + 5 # 将常数加到每一个元素上去 broadcasted_multiplication = two_dim_arr * [[2]] # 自动扩展较小的操作数以匹配较大者的形状 ``` #### 文件 I/O 和内存映射 当处理非常大的数据集时,可能无法一次性加载全部内容到 RAM 中;这时就可以考虑使用内存映射技术。 ```python # 写入二进制文件并读取回来 np.save('my_file.npy', range_array) loaded_data = np.load('my_file.npy') # 如果有一个很大的 CSV 文件想要部分加载的话... data_memmap = np.memmap('large_dataset.dat', dtype='float32', mode='w+', shape=(1e6,)) data_memmap[:] = np.random.rand(int(1e6))[:] del data_memmap # flush changes to disk and close the file existing_mmap = np.memmap('large_dataset.dat', dtype='float32', mode='r', shape=(1e6,))[^4] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值