一个小时完成numpy入门(一)

本文旨在使Python初学者对numpy包有一个基本的了解,能够使用numpy包中的函数进行基本操作,了解各个函数所需要的参数和对应的功能,能够利用numpy解决一些实际问题。下面开始我们的学习

numpy是什么

numpy是Python的一个包,它代表 “Numeric Python”。 它是一个由多维数组对象和用于处理数组的例程集合组成的库。numpy包含两种基本的数据类型,数组和矩阵。

numpy中的ndarray对象

基本的ndarray对象是通过numpy中的数组函数创建的

numpy.array()

这个函数的参数如下所示

numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
  • object 函数处理的对象
  • dtype 数组的数据类型,int,float,complex等
  • copy 可选,默认为true,对象是否被复制。
  • order C(按行)、F(按列)或A(任意,默认)。
  • subok 默认情况下,返回的数组被强制为基类数组。 如果为true,则返回子类。
  • ndmin 指定返回数组的最小维数。
    下面通过几个例子来解释:
例一
import numpy as np
a=np.array([1,2,3])
print(a)
#输出为[1,2,3]
例二
import numpy as np
a=np.array([[1,2,3],[4,5,6]])
print(a)
#输出为[[1 2 3]
#      [4 5 6]]
例三
import numpy as np
a=np.array([1,2,3,4],ndmin=2)
print(a)
#输出为[[1 2 3 4]]
例四
import numpy as np
a=np.array([1,2,3,4],dtype=np.float)
print(a)
#输出为[1. 2. 3. 4.]

numpy的数据类型

数据类型解释
bool存储为一个字节的布尔值(真或假)
int默认整数,相当于 C 的long,通常为int32或int64
intc相当于 C 的int,通常为int32或int64
intp用于索引的整数,相当于 C 的size_t通常为int32或int64
int8字节(-128 ~ 127)
int1616 位整数(-32768 ~ 32767)
int3232 位整数(-2147483648 ~ 2147483647)
int6464 位整数(-9223372036854775808 ~ 9223372036854775807)
uint88 位无符号整数(0 ~ 255)
uint1616 位无符号整数(0 ~ 65535)
uint3232 位无符号整数(0 ~ 4294967295)
uint6464 位无符号整数(0 ~ 18446744073709551615)
floatfloat64的简写
float16半精度浮点:符号位,5 位指数,10 位尾数
float32单精度浮点:符号位,8 位指数,23 位尾数
float64双精度浮点:符号位,11 位指数,52 位尾数
complexcomplex128的简写
complex64复数,由两个 32 位浮点表示(实部和虚部)
complex128复数,由两个 64 位浮点表示(实部和虚部)
数据类型对象dtype

dtype由以下语法构造

numpy.dtype(object, align, copy)
  • object:被操作的对象
  • align:如果为true,则向字段添加间隔,使其类似 C 的结构体。
  • copy : 生成dtype对象的新副本,如果为flase,结果是内建数据类型对象的引用。
例一
import numpy as np
a=np.dtype(np.int32)
print(a)
#输出为int32

int8,int16,int32,int64分别等同于字符串‘i1’,‘i2’,‘i4’,‘i8’

例二
import numpy as np
a=np.dtype('i8')
print(a)
#输出为int64
例三

接下来是结构化数据类型

import numpy as np
a=np.dtype([('score',np.int8)])
print(a)
#输出为[('score', 'i1')]
例四
import numpy as np
student=np.dtype([('name','S10'),('age',np.int8),('score',np.float)])
a=np.array([('duning',19,98.5),('muss',20,97.5)],dtype=student)
print(a)
输出为[(b'duning', 19, 98.5) (b'muss', 20, 97.5)]

每个数据类型都有唯一的字符代码:

  • ‘b’:布尔值
  • ‘i’:符号整数
  • ‘u’:无符号整数
  • ‘f’:浮点
  • ‘c’:复数浮点
  • ‘m’:时间间隔
  • ‘M’:日期时间
  • ‘O’:Python 对象
  • ‘S’, ‘a’:字节串
  • ‘U’:Unicode
  • ‘V’:原始数据(void)

numpy的数组属性

这一目题将介绍numpy中与数组属性有关的部分函数

ndarry.shape

这一数组属性将返回数组的形状

例1
import numpy as np
a=np.array([[1,2,3],[4,5,6]])
print(a.shape)
#输出为(2,3)

即该数组2行3列

例2

利用ndarry.shape也可以强行改变数组的形状

import numpy as np
a=np.array([[1,2,3],[4,5,6]])
a.shape=(3,2)
print(a)
'''
输出为
[[1 2]
 [3 4]
 [5 6]]
 数组已经被强行由2行3列变为3行2列
'''
例3

利用ndarry.reshape函数也可以改变数组形状

import numpy as np
a=np.array([[1,2,3],[4,5,6]])
b=a.reshape(3,2)
print(b)
'''
输出为
[[1 2]
 [3 4]
 [5 6]]
 '''
例四
import numpy as np
a=np.arange(24)
b=a.reshape(2,4,3)
print(b)
输出为
'''
[[[ 0  1  2]
  [ 3  4  5]
  [ 6  7  8]
  [ 9 10 11]]

 [[12 13 14]
  [15 16 17]
  [18 19 20]
  [21 22 23]]]
'''

ndarry.ndim

该数组属性返回数组的维度

import numpy as np
a=np.array([[1,2,3],[4,5,6]])
print(a.ndim)
#输出为2,因为这是个二维数组

numpy.itemsize

该数组属性返回数组中每个元素的字节单位长度

例一
import numpy as np
a=np.array([1,2,3,4,5],dtype=np.int8)
print(a.itemsize)
#输出为1(int8字节长为1)
例二
import numpy as np
a=np.array([1,2,3,4,5],dtype=np.float32)
print(a.itemsize)
#输出为4(float32字节长为4)

numpy.flags

ndarry对象有以下属性,ndarry.flags属性返回它们的当前值

  • C_CONTIGUOUS © 数组位于单一的、C 风格的连续区段内
  • F_CONTIGUOUS (F) 数组位于单一的、Fortran 风格的连续区段内
  • OWNDATA (O) 数组的内存从其它对象处借用
  • WRITEABLE (W) 数据区域可写入。 将它设置为flase会锁定数据,使其只读
  • ALIGNED (A) 数据和任何元素会为硬件适当对齐
  • UPDATEIFCOPY (U) 这个数组是另一数组的副本。当这个数组释放时,源数组会由这个数组中的元素更新
import numpy as np
a=np.array([1,2,3,4,5],dtype=np.float32)
print(a.flags)
'''
输出为
C_CONTIGUOUS : True
  F_CONTIGUOUS : True
  OWNDATA : True
  WRITEABLE : True
  ALIGNED : True
  WRITEBACKIFCOPY : False
  UPDATEIFCOPY : False
'''

第一课暂时就介绍到这里,本文会持续更新知道更新完。

吾心所向,即为远方

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值