python数据分析笔记-1Numpy基础

一、Numpy基础

import numpy as np
nums = np.arange(1000000)
nums_list = list(range(1000000)
%time for i in range(10):nums = nums *2
%time for i in range(10):nums_list = [j*2 for j in nums_list]
  • 在pycharm中有语法错误
  • 数组和列表是有区别的

1. 数组对象ndarray

常用属性

参考文章1
参考文章2
资料参考

  1. ndarray.ndim
    数组轴的个数,在python的世界中,轴的个数被称作秩。
  2. ndarray.shape
    数组的维度。这是一个指示数组在每个维度上大小的整数元组。例如一个n排m列的矩阵,它的shape属性将是(n,m),n是行数,m是列数。这个元组的长度显然是秩,(n,m两个数字,长度为2),即维度或者ndim属性。
  3. ndarray.size
    数组元素的总个数,等于shape属性中元组元素n,m的乘积。
  4. ndarray.dtype
    一个用来描述数组中元素类型的对象,可以通过创造或指定dtype使用标准Python类型。另外NumPy提供它自己的数据类型。
  5. astype
    astype:转换数组的数据类型。
  6. ndarray.itemsize
    数组中每个元素的字节大小。例如,一个元素类型为float64的数组itemsiz属性值为8(=64/8),又如,一个元素类型为complex32的数组item属性为4(=32/8).
  7. ndarray.data
    包含实际数组元素的缓冲区,通常我们不需要使用这个属性,因为我们总是通过索引来使用数组中的元素。
常用方法功能
ndarray.ndim返回int,表示数组的维数
ndarray.shape返回tuple,表示数组的尺寸,对于n行m列的矩阵,形状为(n,m)
ndarray.size返回int,表示数组的元素总数,等于数组形状的乘积
ndarray.dtype返回data-type,描述数组中元素的类型
ndarray.itemsize返回int,表示数组的每个元素的大小(以字节为单位)
ndarray.item(*args)复制数组中的一个元素,并返回
ndarray.tolist()将数组转换成python标准list
ndarray.itemset(*args)修改数组中某个元素的值
ndarray.tostring([order])构建一个包含ndarray的原始字节数据的字节字符串
ndarray.tobytes([order])功能同tostring
ndarray.byteswap(inplace)将ndarray中每个元素中的字节进行大小端转换
ndarray.copy([order])复制数组并返回(深拷贝)
ndarray.fill(value)使用值value填充数组
import numpy as np

arr = np.array([2,4,6,8,10])
arr_two = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(str.format('新创建的一维数组为:{0}',arr))
print(str.format('新创建的二维数组为:\n{0}',arr_two))
新创建的一维数组为:[ 2  4  6  8 10]
新创建的二维数组为:
[[1 2 3]
 [4 5 6]
 [7 8 9]]
  • 其他
    Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。
    基本语法是通过 {} 和 : 来代替以前的 % 。
    format 函数可以接受不限个参数,位置可以不按顺序。
    资料参考

2.Numpy中的random模块

示例说明
random模块

3.Numpy中数组的访问与形态变换

ndarray对象的内容可以通过索引或切片来访问和修改,与 Python 中 list 的切片操作一样。

ndarray 数组可以基于 0 - n 的下标进行索引,切片对象可以通过内置的 slice 函数,并设置 start, stop 及 step 参数进行,从原数组中切割出一个新数组。

访问一维数组

访问
通过冒号分隔切片参数 start:stop:step 来进行切片操作

参考文章

  • 跟列表的区别在于,数组切片是原始数据的视图,这意味着数据不会被复制,视图上的任何修改都会直接反映到源数组上

访问多维数组

访问多维数组

变换数组形态

1)改变数组形状

示例说明

  • 利用数组的shape属性
  • 利用reshape函数改变数组形状(一般采用reshape)
  • .T属性实现数组转置(仅行列转换使用T这个属性)
2)展平数组
  • ndarray.ravel()
  • ndarray.flatten():返回一份拷贝,不影响原始矩阵(横向展平不传参,纵向展平传参’F’)
3)组合数组
组合形式语法说明
横向组合np.hstack((arr1,arr2))arr1和arr2行数相同
纵向组合np.vstack((arr1,arr2))arr1和arr2列数相同
横纵向组合np.concatenate((arr1,arr2),axis = 1)控制axis,axis = 1为横向组合, axis = 0为纵向组合
4)分割数组
  • np.hsplit
  • np.vsplit
  • np.split

4.简单的统计分析

1)排序

直接排序:

  • arr.sort(axis =1)沿横轴排序
  • arr.sort(axis =0)沿纵轴排序

间接排序:

  • arr.argsort函数返回值为重新排序值的下标
  • np.lexsort(a,axis = -1,kind=‘quicksort’,order=None)函数

2)去重数据

np.unique函数

3)重复数据

  • np.tile(A,reps)函数
  • np.repeat(a,repeats,axis=None)函数

4)数组的集合运算

  • intersect1d(x,y)
  • union1d(x,y)
  • in1d(x,y)
  • setdiff1d(x,y)
  • setxor1d(x,y)

5.Numpy中通用函数ufunc的运算

参考文献1
参考文献2
通用函数(universal function),是一种能够对数组中所有元素进行操作的函数。
以Num数组作为输出,因此不需要对数组每个元素都操作,比math库中的函数操作效率更高。

  • 四则运算:加(+)、减(-)、乘(*)、除(/)、幂(**)。数组间的四则运算表示对每个数组中的元素分别进行四则运算,所以形状必须相同。
  • 比较运算:>、<、==、>=、<=、!=。比较运算返回的结果是一个布尔数组,每个元素为每个数组对应元素的比较结果
  • 逻辑运算:np.any 函数表示逻辑“or”,np.all 函数表示逻辑“and”。运算结果返回布尔值。

常用的统计函数

参考文献1
参考文献2

统计函数

6.Numpy中用于数组的文件输入输出

读取二进制文件

读取二进制

读取文本文件(或CSV文件)

参考文献1
参考文献2

  1. 文件读取
    np.savetxt(fname,dtype=float,delimiter=None,unpack=None)
    Parameter解释:
    fname:待读取的文件,生成器,(字符串形式),也可以是.gz或.bz2的压缩文件。
    dtype:表示要读取结果文件的数据类型。可选参数,默认是np.float。
    delimiter:分隔字符串,默认是None。
    unpack:默认是False。若为True,读取属性分别写入不同变量。
  2. 文件保存
    np.savetxt(fname,array,fmt=’%.18e’,delimiter=None)
    Parameter解释:
    array:待存入文件的数组。
    fmt:写入文件的格式

读取文本文件

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Max_J999

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值