【sckit-learn学习(0)】numpy基础

最近看到同事用sckit-learn的统计n-gram的库省去了好多麻烦,决定从基础开始看sckit-learn,从numpy基础重新开始复习,尽量每天一篇,内容会同步到https://github.com/pangdaxing/sckit-learn-notebook

narray基础

概念

  • axes(轴)-相当于矩阵的维度,轴的总数等于矩阵的秩
    • eg: 一个3d点如果表示为[1,2,1],那么他的axis数量是1,axis0的长度是3
  • ndarray-是存放array的类,array可以看作是narray的别名
    • ps:np.array和python标准库中的array不是一回事,array.array是只有一维的
  • ndarray.ndim
    • axis的数量,也就是矩阵的秩
  • ndarray.shape
    • 矩阵每个维度的长度,即ndim中顺序遍历每个axis返回的length
  • ndarray.size
    • 矩阵元素的总量,相当于ndarray.shape中所有值的乘积
  • ndarray.dtype
    • 矩阵中每个元素的类型,可选的有numpy.int32, numpy.int16, and numpy.float64,如果不指定,会在初始化的时候根据传入list类型自动转型
    • ps:注意如果np.array([1,3])这种会认为是int类型,要进行float相关需要强制指定类型
  • ndarray.itemsize
    • 矩阵中每个元素所占的字节数,和ndarray.dtype.itemsize是一回事
    • float64 has itemsize 8 (=64/8)
      • complex32 has itemsize 4 (=32/8).
  • ndarray.data
    • 存放了具体的矩阵数据的数据buffer,我们用矩阵的index的操作的时候会用到
import numpy as np
a = np.arange(15).reshape(3, 5)
print("a:")
print(a)

print("a.shape:")
print(a.shape)

print("a.dim:")
print(a.ndim)

print("a.type")
print(a.dtype.name)

print("a.itemsize")
print(a.itemsize)

print("a.size")
print(a.size)

print("type(a):")
print(type(a))

数组的创建

  1. 通过python的tuple或者list来创建
  2. 通过numpy的各种函数创建
import numpy as np

## 通过python的list创建
a = np.array([2, 3, 4])
print("a:")
print(a)
print("a.type:")
print(a.dtype)
print("a.itemsize:")
print(a.itemsize)

b = np.array([(1.5, 2, 3), (4, 5, 6)])
print("b:")
print(b)
print("b.type:")
print(b.dtype)
print("a.itemsize:")
print(b.itemsize)

c = np.array([[1, 2], [3, 4]], dtype=complex)
print("c:")
print(c)
print("c.type:")
print(c.dtype)
print("c.itemsize:")
print(c.itemsize)

## 通过numpy的函数创建
print("np.zeros(3,4):")
print(np.zeros((3, 4)))

#调用函数的时候同样可以指定dtype
print("np.ones((2,3,5),dtype=np.int64")
print(np.ones((2, 3, 5), dtype=np.int64))

#返回一个没有初始化的矩阵,初始值是任意的
print("np.empty((3,4), dtype=np.int32):")
print(np.empty((3, 4), dtype=np.int32))

#可以用类似range的arange创建list,不同的是返回的是np.narray
print("np.arrage(1,3,0.3):")
print(np.arange(1, 3, 0.3))

#因为arrange采用浮点步长的时候,表示精度会带来误差,返回数组长度无法完全可控,更好的生成序列的方式是用linespace
#注意linespace的最后一个参数是区间数,而arrange是步长
print("np.linespace(0, 2*pi, 100)")
print(np.linspace(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值