numpy的使用
NumPy介绍
NumPy是Python中科学计算的基础包。它Python库,提供多维数组对象,各种派生对象(如掩码数组和矩阵),以及用于数组快速操作的各种API,如包括数学,逻辑,形状操作,排序,选择,输入输出,离散傅里叶变换,基本线性代数,基本统计运算和随机模拟等等。
- ndarray.ndim - 数组的轴(维度)的个数。在Python世界中,维度的数量被称为rank。
- ndarray.shape - 数组的维度。这是一个整数的元组,表示每个维度中数组的大小。对于有 n 行和 m 列的矩阵,
shape将是(n,m)。因此,shape元组的长度就是rank或维度的个数ndim。 - ndarray.size - 数组元素的总数。这等于
shape的元素的乘积。 - ndarray.dtype - 一个描述数组中元素类型的对象。可以使用标准的Python类型创建或指定dtype。另外NumPy提供它自己的类型。例如numpy.int32、numpy.int16和numpy.float64。
- ndarray.itemsize - 数组中每个元素的字节大小。例如,元素为
float64类型的数组的itemsize为8(=64/8),而complex32类型的数组的itemsize为4(=32/8)。它等于ndarray.dtype.itemsize。 - ndarray.data - 该缓冲区包含数组的实际元素。通常,我们不需要使用此属性,因为我们将使用索引访问数组中的元素。
import numpy as np
import random
a = np.array([[1., 7., 0.], [-2., 3., 3.], [-2., 1., 2.]], dtype='float64')
b = np.array([[3., 2., 1.], [-5., 6., 2.], [2., -1., -2.]], dtype='float64')
# 指定数据类型
print(a)
# b = np.round(a, 3)
# 构造小数,控制位数,约等于的意思
# print(b, '\n', round(random.random(),3))
#
# print('类型', type(a))
#
# print('维度数==>', a.ndim) #数组的维度数
#
# print('维数==>', a.shape) #数组的维数
#
# print('总数==>', a.size) #数组元素的总数
#
# print('类型==>', a.dtype) #数组的类型
#
# print('每个元素占有的字节大小==>', a.itemsize) #数组中每个元素占有的字节大小
#
# print('缓存区==>', a.data) #数组元素的缓存区
#
#
#
# print(a.T)
# print(a.transpose())
# print(a.swapaxes(1, 0)) # 默认a.swapaxes(1, 0)
# 转置
# print('取连续的多行,第二行,第一行,第三行')
# print(a[[1, 0, 2]])
#
# print('取连续多列')
# print(a[:, 1:2])
# print(a < 0)
# print('小于0的\n', a[a < 0])
# a[a < 0] = 3
# print(a)
# 将a中小于0的数字替换为3
# b = np.where(a < 0, 1, 3)
# 三元运算符,a小于0时,数字置为1,否则置为3
# print(b)
# c = a.clip(0, 2)
# 裁剪小于等于0的替换为0,大于等于2的变为2
# print(c)
# c = np.vstack((a, b))
# print(c)
# 竖直拼接,里面是元祖
# c = np.hstack((a, b))
# print(c)
# 水平拼接,里面是元组
# a[[1, 2], :] = a[[2, 1], :]
# print(a)
# 数组行列交换
# c = np.argmax(a, axis=0)
# print(c)
# 获取列方向最大值位置
# c = np.argmin(a, axis=1)
# print(c)
# 获取行方向最小值位置
# c = np.zeros((3, 4))
# 0矩阵
# print(c)
# c = np.ones((3, 4))
# 单位矩阵
# print(c)
# c = np.eye(3)
# print(c)
# 创建一个对角线为为1的数组(方阵)
# 随机数
np.random.seed(4)
# 随机数种子,s是给定的种子值,因为计算机生成的是伪随机数,所以通过设定相同的随机数种子,可以每次生成相同的随机数
# 开启随机后,后面的随机数和上一次的一样
# c = np.random.rand(2, 3)
# print(c)
# 创建2行3列均匀分布随机数组,非点数,范围从0-1
# c = np.random.randn(2, 3)
# print(c)
# 创建3维标准正太分布随机数组,浮点数,平均数0,标准差1
# c = np.random.randint(1, 5, (2, 4))
# print(c)
# 从给定上下限范围选取随机数证书,范围是1,5,形状是2行4列
# c = np.random.uniform(1, 4, (2, 4))
# 产生具有均匀分布的数组,1为起始值,4为结束值,2行4列
# c = np.random.normal(loc, scal, (size)) 从指定正态分布中随机抽取样本,
# 分布中心是loc(概率分布的均值),标准差是scale,形状是size
# print(type(np.nan))
# 表示非数字
# print(np.count_nonzero(a))
# 统计非零个数
# print(np.isnan(a))
# 显示是否为nan
# print(np.sum(a))
# 求和,全部数字加起来
# print(np.sum(a, axis=0))
# 计算行方向,算每一列的和,
# print(a.mean(axis=0))
# 计算每一列的均值
# print(np.median(a, axis=0))
# 计算每一列的中值
# print(np.min(a, axis=0))
# 计算每一列的最小值
# print(np.ptp(a, axis=0))
# 计算每一列的极值
# print(a.std(axis=0))
# 标准差
a = np.loadtxt('we.csv', dtype=np.float, delimiter=',', skiprows=0, usecols=None, unpack=False)
b = np.loadtxt('we.csv', dtype=np.float, delimiter=',', skiprows=0, usecols=None, unpack=True)
print(a, '\n', b)
# frame 文件,字符串或产生器,可以是.gz或bz2压缩文件
# dtype 数据类型,可选,csv的字符串以什么数据类型读入数组中,默认np.float
# delimiter 分隔字符串,默认是任何空格,改为逗号
# skiprows 跳过前面x行,一般跳过第一行表头
# usecols 读取指定的列,索引,元组类型
# unpack 如果True,读入属性将分别写入不同数组变量(数组转置),False读入数据只写入一个数组变量,默认False
a = np.array([[1., 7., 0.], [-2., 1., 2.]], dtype='float64')
# 转置
print(a.T)
print(a.transponse())
King@_@

浙公网安备 33010602011771号