numpy的基础

NumPy是在Python中进行科学计算的基础包。它提供多维数组(矩阵)对象各种各样的函数操作。在数组上的快速操作,包括数学、逻辑、转换、排序、选择、方差、期望、离散傅里叶变换转换等等,我们在科学计算中常用的基本的线性代数,基本的统计运算,随机模拟等等都在numpy得到支持,可见numpy是多么的强大。

我第一次接触numpy时是由于需要将matlab训练完成的模型落地,发布到ubuntu服务器上,需要将matlab的源码转为python去编写,这时学习numpy的开始。

1、数据类型

类型  描述
bool_ Boolean (True or False) stored as a byte
int_  默认的整数类型 (和C语言的long型相同; 通常是int32或者int64)
intc  和C语言的int类型一致
intp 整数用于索引 (类似 C ssize_t; 通常是int32或者int64)
int8 Byte (-128 to 127)
int16  整型 (-32768 to 32767)
int32 整型(-2147483648 to 2147483647)
int64 整型(-9223372036854775808 to 9223372036854775807)
uint8  无符号 整型 (0 to 255)
uint16 无符号 整型 (0 to 65535)
uint32 无符号 整型 (0 to 4294967295)
uint64 无符号 整型 (0 to 18446744073709551615)
float_ Shorthand for float64.
float16 半精度浮点数:符号位,5位指数,10位的尾数
float32  单精度浮点数:符号位,8位指数,23位的尾数
float64  双精度浮点数:符号位,11位指数,52位的尾数
complex_ complex128简写
complex64 用两个32位的浮点数表示的复数
complex128 用两个64位的浮点数表示的复数

2、矩阵操作

# -*- coding: utf-8 -*-
"""
Created on Mon Jul 16 18:13:11 2018

@author: linxiaojie
"""

import numpy as np

#创建长度为6的,元素都是0一维数组array([0, 1, 2, 3, 4, 5])
range_array = np.arange(6)
print(range_array)

# 随机生0-14成续的3*4的矩阵
a = np.arange(12).reshape(3,4)
print(a)

# 生成大小为1-10的线性等分向量,注意num默认为50
line_space = np.linspace(1,10)
print(line_space)

# 生成大小为1-10的对数等分向量,注意num默认为50
log_space = np.logspace(1,10)
print(log_space)

# 生成单位矩阵
eye = np.eye(3,3)
print(eye)

# 生成2*4全1矩阵
b = np.ones((3,4), np.int64)
print(b)

# 生成4*5全0矩阵
c = np.zeros((3, 4))
print(c)

# 矩阵横向合并
d = np.hstack((b,c))
print(d)

# 矩阵纵向合并
e = np.vstack((b,c))
print(d)

# 从指定的矩阵中提取出相应的行和列,生成新的矩阵, 上面的e是6*4矩阵,提取第2行到第4行中的第3列到第四列,即得到一个3*2的矩阵
f = e[1:4, 2:4]
print(f)

# 获取矩阵的行列,返回的是一个元组
array_shape = np.shape(f)
print(array_shape)

#创建3行2列,未初始化的二维数组
empty_array = np.empty((2,3)) 

# 两个矩阵数值求和,减法类同
g = a + b
print(g)

# 两个同型矩阵数值相乘
j = a * b
print(j)

# 矩阵中所有元素乘以某系数
k = 3 * j
print(k)

# 两个矩阵相乘
tmp = np.floor(10*np.random.rand(4,3))
h = np.dot(g, tmp)
print(h)

# 删除矩阵的第2和第3行
i = np.delete(a,(1,2),0)#删除a的第二,三行
print(i)

在我们日常使用中当然不仅仅上面这些操作,例如使用where去查找、使用vsplit去切分、三角函数求值、求方差及期望等等,后面有机会再详述。

3、I/O操作

# -*- coding: utf-8 -*-
"""
Created on Wed Jul 18 15:33:48 2018

@author: linxiaojie
"""

import numpy as np
from io import BytesIO

# 从数据串中读取,参数还有很多种,根据实实际需求从官方文档获取相应的帮助
data = "1, 2, 3\n4, 5, 6"
np.genfromtxt(BytesIO(data.encode()), delimiter=",")

# 从文件中读取
data = numpy.genfromtxt("data.txt", delimiter=",")
print(type(data))

猜你喜欢

转载自blog.csdn.net/goodstudy168/article/details/81075192
今日推荐