美文网首页Python与数据分析
【Python学习笔记】numpy初学笔记

【Python学习笔记】numpy初学笔记

作者: 清梦载星河 | 来源:发表于2019-08-01 21:47 被阅读0次

1. Numpy数组的创建

import numpy as np

# 1.1 np.array() 创建ndarray最基本的方法
arr1 = np.array([0,1,2,3,4])

# 1.2 创建一个长度为10的数组,数组的值全为0
arr2 = np.zeros(10,dtype=int)

# 1.3 创建一个3 * 5的浮点型数组,数组的值都是1
arr3 = np.ones((3,5),dtype=float)

# 1.4 创建一个3 * 5的浮点型数组,数组的值都是3.14
arr4 = np.full((3,5),3.14)

# 1.5 创建一个线性序列数组,从0开始,到20结束,步长为2
arr5 = np.arange(0,20,2)

# 1.6 创建一个5个元素的数组,这5个数均匀地分配到0~1
arr6 = np.linspace(0,1,5)

# 1.7 创建一个3 * 3的单位矩阵
arr7 = np.eye(3)

# 1.8 创建一个由3个整型数组组成的未初始化的数组,数组的值是内存空间的任意值
arr8 = np.empty(3)

2. Numpy数组的属性

  • ndim : 数组的维度
  • shape : 数组每个维度的大小
  • size : 数组的总大小
  • dtype : 数组的数据类型(常用)
  • itemsize : 每个数组元素字节大小
  • nbytes : 数组总字节大小

3. Numpy的通用函数

3.1 数组变形

  • .T : 转置
  • reshape()
  • resize()

示例代码:

import numpy as np

arr1 = np.arange(10)
# 变形为一个 5 * 2的二维数组,参数为待操作数组和一个元组
print(np.reshape(arr1,(5,2))) 
# 当转换前后元素数目不同,resize()可强制转换
print(np.resize(arr1,(2,6)))

reshape()会改变原数组,而resize()生成一个新数组,不会改变原数组。

3.2 数组的复制

使用赋值符为浅复制,使用array.copy()为深复制。
ndarray自带.copy(),无需import copy

3.3 数组类型转换

  • .astype()

示例代码:

arr1 = np.arange(10,dtype='int32')
arr2 = arr1.astype(np.int64)

3.4 数组堆叠(拼接)

作用:将多个数组合并为一个

  • np.concatenate() 。参数为数组元祖或数组列表;也可用于二维数组,此时可设置axis参数,默认axis=0,沿垂直方向拼接,axis=1为水平拼接。
  • np.vstack() 。参数为数组元祖或数组列表,垂直拼接。
  • np.hstack() 。参数为数组元组或数组列表,水平拼接。

示例代码:

x = np.array([1,2,3])
y = np.array([4,5,6])
print(np.concatenate([x,y]))

# Console:
# array([1,2,3,4,5,6])

3.5 数组拆分

作用:将一个数组拆分为多个数组

  • np.split() 。
  • np.hsplit() 。水平分割。
  • np.vsplit() 。垂直分割。
  • 参数为一个索引列表,索引列表记录的是分裂点位置,N个分裂点会得到 N + 1 个子数组。

3.6 简单运算

Numpy数组使用向量化操作,使得Numpy数组的计算有时会非常快。

  • +、-、 *、/ :加减乘除等
  • arr.mean() : 求平均值
  • arr.sum() : 求和
  • arr.min() : 求最小值
  • arr.max() : 求最大值
  • arr.std() : 求标准差
  • arr.var() : 求方差
  • arr.prob() : 求累积
  • arr.abs() : 求中位数

4. Numpy数组的索引及切片及切片

类似标准Python中列表的索引。

示例代码:

x = np.arange(10)
y = np.arange(10).reshape((2,5))

4.1 基本索引及切片

# 打印最后一个元素
print(x[-1])

# 打印第二个到第六个元素(左闭右开)
print(x[1:6])

4.2 二维数组索引

# 打印第一行第一个元素
print(y[0,0])

4.3 布尔型索引及切片

  • 比较运算符:大于、小于、等于……
  • 布尔运算符:& 、| 、^ 、~
  • 补充:np.any() 和 np.all()
# 有没有值大于8?返回True或者False
np.any(x > 8)

# 是不是所有值都小于10?返回True或者False
np.all(x < 10)

4.4 利用索引数组进行索引

示例代码:

x = np.arange(12).reshape((3,4))
y = np.arange(12)

# 打印y数组索引3、7、2的元素
print(y[3],y[7],y[2])
or
ind = [3,7,2]
print(y[ind])

# 二维数组中的数组索引
row = np.array([0,1,2])
col = np.array([2,1,3])
print(x[row,col])

5. Numpy中的随机数

  • np.random.rand() # 值区间为0~1
  • np.random.randint()
  • np.random.narmal() # 均值为0,标准差为1的正态分布

6. Numpy数据的输入输出

存储数组数据:.npy文件

np.save(FILENAME,ARRAY)

读取:

np.load(FILENAME)

存储成txt文件:

np.savetxt(FILENAME,ARRAY,delimeter='分隔符')

np.loadtxt(...)

相关文章

网友评论

    本文标题:【Python学习笔记】numpy初学笔记

    本文链接:https://www.haomeiwen.com/subject/zmrhdctx.html