numpy 矩阵 秩_数据分析numpy总结

本文介绍了Numpy中的核心对象ndarray,包括它的生成、数据类型、属性查看、运算与数学函数、索引切片、转置、布尔型索引等功能。还探讨了矢量化高级数据处理,如np.where函数、统计学方法、排序、线性代数和随机数生成,这些是高效处理大数据的关键。
摘要由CSDN通过智能技术生成

c75119839cb849676b1ed4f91845bdf4.png

Numpy(Numerical python)是基于Python的高性能的开源数据计算与数据分析基础包,支持大量的数据与矩阵运算,此外也针对数组运算提供大量的数学函数库,Numpy本身没有提供高级的数据分析功能,但理解numpy数组的概念以及面向数组的运算设计有助于高效实用pandas等更加高级的工具。

一、ndarray:一种多维数组对象

Numpy最重要的一个特点就是N维数组对象(即ndarray),该对象是一个快速而灵活的同构数据多维容器,可以利用这种数组对整块数据执行一些数学运算,通常叫做矢量化运算,即大小相等的数组之间的任何算数运算都会将运算应用到元素级,该部分是ndarray相关操作总结

# 举例说明数组的优点  计算A**2 + B**3
a = [0,1,2,3,4]
b = [9,8,7,6,5]

### 一般Python循环方法
def pysum():
    c = []
    for i in range (len(a)):
        c.append(a[i]**2 + b[i]**3)
    return c
print (pysum())

### numpy 算法
"""
- 去掉循环,使一维数据更像单个数据,优化算法,提高运算速度
- 数组对象采用相同的数据类型,有助于节省运算和存储空间
"""
import numpy as np
def npsum():
    a = np.array([1,2,3,4])
    b = np.array([8,7,6,5]) 
    c = a**2 + b**3
    return c
print(npsum())

1.1ndarray的生成函数

a340f5e82cde32a6a26e45243e9994e8.png

注意:由于Numpy关注的是数值运算

C++数组模板封装,主要成员包括: public: Array(); Array(int size); Array(int size, T value); Array(Array<T> & other); Array(T * arr, int size); Array(int size, T* arr, int arrSize); template <typename T2> Array(Array<T2> & other); template <typename T2> Array(T2 * arr, int size); template <typename T2> Array(int size, T2 * arr, int arrSize); ~Array(void); inline int Size(); // 返回元素的个数 inline int MemorySize(); // 返回实际占用内存的字节数 inline void ReSize(int size); // 重新设定大小,清除所有的数据 inline T * Buffer(); // 获取内部数组的首地址 inline void SetValue(int index, T val); // 设置第index个数据的值 inline T GetValue(int index); // 获得第index个数据 T SquareOfNorm2(); // 2范式的平方 T SquareOfDistance(Array<T> & another); // 距离另一个数组的距离的平方 T Distance(Array<T> & another); // 计算两个数组的距离 Array<T> Cut(int start, int len); // 从向量中截取一部分成为新的向量 Array<T> Cut(int start); // 将数组剪切一部分,返回新的数组,从start开始,一直到结束 T Norm0(); // 0范式,即求非0元素个数 T Norm1(); // 1范式,即求所有元素的和 T Norm2(); // 2范式,即求所有元素的平方和开根号 T Norm(int p = 2); // p范式 T Sum(); // 所有元素的和 void SetSmallValueToZero(); // 将绝对值小于eps的数值设置为0 T AbsMin(); // 返回绝对值的最小值 T Min(); // 返回最小值 T AbsMax(); // 返回绝对值的最大值 T Max(); // 返回最大值 void Offset(T value); // 所有数据偏移value T Average(); // 获得所有数据的平均值 void AverageTo(T value = 0); // 将数据平均化到某个数值 T Variance(); // 返回方差 void GaussianWhiten(); // 高斯白化,使得数组平均值为0,方差为1 void AbsValues(); // 所有的元素取绝对值 bool InfinityCheck(T maxValue = 1E50); // 数据检查,看数组中是否有数据为无穷大 bool IsZero(); // 返回数据是否全部为0 void Clear(); // 将数据全部清0 void Normalization(); // 正规化,每个元素平方和为1 void SumAsOne(); // 是每个元素的和为1 void SetMinTo(T value); // 将小于value的元素全部设置为value void SetMaxTo(T value); // 将大于value的元素全部设置为value virtual void WriteToTextFile(string filename, bool append = false); virtual void WriteToTextFile(ofstream & o); virtual void ReadFromTextFile(string filename); virtual void ReadFromTextFile(ifstream & i); protected: inline void Init(int size); public: Array<T> & operator = (Array<T> & v); Array<T> & operator = (T value); T & operator[] (int index); template<typename T2> Array<T> & operator = (Array<T2> & v); template<typename T> friend ostream & operator << (ostream & out, Array<T> & vector); template<typename T> friend istream & operator >> (istream & in, Array<T> & vector);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值