Python数据科学常用库——Numpy

Python数据科学常用库——Numpy

一、数组的创建与访问

0x1 创建一维数组

import numpy as np
 # create from python list
list_1 = [1, 2, 3, 4]
array_1 = np.array(list_1)

0x2 创建二维数组

list_2 = [5, 6, 7, 8]
array_2 = np.array([list_1, list_2])
>>>
array([[1, 2, 3, 4],
       [5, 6, 7, 8]])

0x2 访问数组属性

array_2.shape  # 数组类型
>>>(2,4)
array_2.size  # 数组大小
>>>8
array_2.dtype # 数组数据类型
>>>dtype('int64') # 取精确度最高的

0x3 特殊方法创建矩阵

array_4 = np.arange(1, 10, 2)  # 创建1-10,步长为2
>>>array([1, 3, 5, 7, 9])

np.zeros(5) # 5个元素的零矩阵
>>>array([ 0.,  0.,  0.,  0.,  0.])

np.zeros([2,3]) # 二行三列的零矩阵
>>>array([[ 0.,  0.,  0.],
          [ 0.,  0.,  0.]])
       
np.eye(5) # 5x5单位矩阵
>>>array([[ 1.,  0.,  0.,  0.,  0.],
          [ 0.,  1.,  0.,  0.,  0.],
          [ 0.,  0.,  1.,  0.,  0.],
          [ 0.,  0.,  0.,  1.,  0.],
          [ 0.,  0.,  0.,  0.,  1.]])
       

0x4 访问数组元素

# 一维数组,下标和切片访问
a[1]
a[1:5]

# n维数组,下标和切片访问
b = np.array([[1,2,3],[4,5,6]])
b[1][0] = 4
c = np.array([[1,2,3],[4,5,6],[7,8,9]])
c = array([[1, 2, 3],
           [4, 5, 6],
           [7, 8, 9]])
c[:2,1:] = array([[2, 3],
                  [5, 6]])

二、数组与矩阵的运算

0x1 随机生成数组

import numpy as np
np.random.randn(10) # 返回一个或一组样本,具有标准正态分布
np.random.randint(10, size=20) # 0-9,生成20个随机数
np.random.randint(10, size=(2,3)) # 0-9,生成2*3的矩阵
np.random.randint(10, size=20).reshape(4, 5) # 一维数组重塑为二维数组

0x2 数组的计算

加减乘除,除法运算中注意数组中不能有0.
对应位置相加减乘除

0x3 矩阵相关

# 矩阵的创建
np.mat([[1,2,3],[4,5,6]]) 
>>>matrix([[1, 2, 3],
           [4, 5, 6]])
np.mat(a) # 数组转换为矩阵

# 矩阵的运算
矩阵加减与数组相同
乘除需要满足矩阵运算应该满足的条件        

0x3 数组常用函数

a = np.random.randint(10, size=20).reshape(4,5)
np.unique(a)  # 返回数组中唯一的数
>>>array([[4, 1, 2, 5, 3],
          [9, 8, 1, 4, 0],
          [5, 4, 8, 0, 2],
          [8, 6, 2, 4, 3]])
sum(a)        # 数组每一列的元素的和
>>>array([26, 19, 13, 13,  8])    
sum(a[0])     # 数组第一行的元素的和 
>>>15
max(a[:,0])   # 数组第一列的和
>>>26 
a.max()       # 数组最大值
max(a[0])     # 数组第一行最大值
max(a[:,0])   # 数组第一列最大值

二、数组的输入与输出

0x1 使用pickle序列化numpy array

import pickle
import numpy as np
x = np.arange(10) 
f = open('x.pkl', 'wb') # 写二进制文件
pickle.dump(x, f)       # 序列化到硬盘
f = open('x.pkl', 'rb') # 读二进制文件
pickle.load(f)

0x2 使用sava序列化numpy array

x = np.arange(10) 
y = np.arange(20)
np.save('one_array', x)  # 序列化x
np.load('one_array.npy') # 读x
np.savez('two_array.npz', a=x, b=y)  # 写入两个数组
c = np.load('two_array.npz')
c['a']
c['b']
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值