python基础 - Numpy

Numpy 是 Python 数据科学计算的核心库,提供了高性能的多维数组对象及处理数组的工具。

使用以下语句导入 Numpy 库:

import numpy as np

1、创建数组

a = np.array([1, 2, 3])
b = np.array([(1.5, 2, 3), (4, 5, 6)], dtype=float)
c = np.array([[(1.5, 2, 3), (4, 5, 6)], [(3, 2, 1), (4, 5, 6)]], dtype=float)

np.zeros((3, 4))                    # 创建值为0数组
np.ones((2, 3, 4), dtype=np.int16)  # 创建值为1数组
d = np.arange(10, 25, 5)            # 创建均匀间隔的数组(步进值)
np.linspace(0, 2, 9)                # 创建均匀间隔的数组(样本数)
e = np.full((2, 2), 7)              # 创建常数数组
f = np.eye(2)                       # 创建2x2单位矩阵
np.random.random((2, 2))            # 创建0-1随机值的数组
np.empty((3, 2))                    # 创建空数组

2、数据类型

np.int64        # 带符号的64位整数
np.float32      # 标准双精度浮点数
np.complex      # 显示为128位浮点数的复数
np.bool         # 布尔值:True值和False值
np.object       # Python对象
np.string_      # 固定长度字符串
np.unicode_     # 固定长度Unicode

3、数组信息

a.shape         # 数组形状,几行几列
len(a)          # 数组长度 
b.ndim          # 几维数组
e.size          # 数组有多少元素
b.dtype         # 数据类型
b.dtype.name    # 数据类型的名字
b.astype(int)   # 数据类型转换

4、调用帮助信息

np.info(np.ndarray.dtype)

5、运算

(1)比较:

a == b   # 对比值
array([[False, True, True], [False, False, False]], dtype=bool)
a < 2    # 对比值
# array([True, False, False], dtype=bool)
np.array_equal(a, b)  # 对比数组
a * 2    # 乘法
# array([2, 4, 6])
a + np.array([5, 6, 7])   
# array([6, 8, 10])

(2)统计函数:

a.sum()             # 数组求和
a.min()             # 数组最小值
b.max(axis=0)       # 数组最大值,按行  array([4., 5., 6.])
b.cumsum(axis=1)    # 数组元素的累加值  array([[ 1.5,  3.5,  6.5], [ 4. ,  9. , 15. ]])
a.mean()            # 平均数
a.std(b)            # 标准差

 中位数、相关系数只能用np.func:

np.median(a)        # 中位数
np.corrcoef(a)      # 相关系数

其余函数也可以np.func:

np.sum(a)
np.min(a)
np.max(b, axis=0)
np.cumsum(b, axis=1)
np.mean(a)
np.median(a)
np.corrcoef(a)
np.std(b)

(3)基本运算:

g = a - b           # 减法 array([[-0.5, 0., 0.], [-3., -3., -3.]])
np.subtract(a, b)
b + a               # 加法 array([[2.5, 4., 6.], [5., 7., 9.]])
np.add(b, a)
a / b               # 除法 array([[0.66666667, 1., 1.], [0.25, 0.4, 0.5]])
np.divide(a, b)
a * b               # 乘法 array([[1.5, 4., 9.], [4., 10., 18.]])
np.multiply(a, b)   
np.exp(b)           # 幂
np.sqrt(b)          # 平方根
np.sin(a)           # 正弦
np.cos(b)           # 余弦
np.log(a)           # 自然对数
e.dot(f)            # 点积 array([[7., 7.], [7., 7.]])

6、数组复制

h = a.view()   # 浅拷贝,使用同一数据创建数组视图
np.copy(a)     # 深度拷贝
h = a.copy()   # 深度拷贝

7、数组排序

a.sort()        # 数组排序
c.sort(axis=0)  # 以轴为依据对数组排序

8、子集、切片、 索引

遍历和查找同list类似:

a[1]      # 2  选择索引1对应的值
a[0:2]    # array([1, 2])  选择索引0和1对应的值

二维 Numpy 数组的子集与list不同:

b[:,0]      # array([1.5, 4])  b[rows, columns]
c[1,...]    # 等同于 [1,:,:]
b[[1, 0, 1, 0],[0, 1, 2, 0]]     # 选择(1,0),(0,1),(1,2) 和(0,0)所对应的值

9、数组操作

(1)转置数组

i = np.transpose(b)
i.T

(2) 改变数组形状

b.ravel()            # 拉平数组
g.reshape(3, -2)     # 改变数组形状,但不改变数据
b.resize((2,7))      # 返回形状为(2,6)的新数组

(3) 添加或删除值

np.append(h, g)     # 追加数据
np.insert(a, 1, 5)  # 插入数据 1的位置插入5  
np.delete(a, [1, 2])   # 删除数据 删除1,2处的数

(4)合并数组

np.concatenate((a, d),axis=0)    # array([ 1, 2, 3, 10, 15, 20])

(5) 分割数组

np.hsplit(a, 3)  # 纵向分割数组为3等份 [array([1]), array([2]), array([3])]
np.vsplit(c, 2)  # 横向分割数组为2等份 [array([[[ 1.5, 2. , 1. ], [ 4. , 5. , 6. ]]]), array([[[ 3., 2., 3.], [ 4., 5., 6.]]])]

(6) 合并数组

np.r_[e, f]         # 纵向以行的维度堆叠数组
np.vstack((e, f))   # 纵向以行的维度堆叠数组
# array([[7., 7.],
#        [7., 7.],
#        [1., 0.],
#        [0., 1.]])

np.hstack((e, f))   # 横向以列的维度堆叠数组
np.column_stack((e, f))
np.c_[e, f]         # 横向以列的维度堆叠数组
# array([[7., 7., 1., 0.],
#        [7., 7., 0., 1.]])

10、输入/输出 

(1)保存与载入磁盘上的文件

np.save('my_array', a)
np.savez('array.npz', a, b)
np.load('my_array.npy')

(2)保存与载入文本文件

np.savetxt("myarray.txt", a, delimiter=" ")
np.loadtxt("myfile.txt")
np.genfromtxt("my_file.csv", delimiter=',')

摘自DataCamp
Learn Python for Data Science Interactively 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值