使用numpy生成数字

生成的类型是ndarray类型

t1 = np.array([1,2,3,4,5])
print(t1,type(t1)) # 类型为ndarray t2 = np.array(range(10))
print(t2) t3 = np.arange(10) # 相当于array+range
print(t3,t3.dtype) # dtype 可以查看数组内的数据类型 t4 = np.arange(10,dtype="f2") # 制定数据类型
print(t4.dtype) t5 = np.array([random.random() for i in range(10)]) # 10个小数
print(t5) t6 = np.round(t5,2) # 取小数后两位
print(t6)
[1 2 3 4 5] <class 'numpy.ndarray'>
[0 1 2 3 4 5 6 7 8 9]
[0 1 2 3 4 5 6 7 8 9] int32
float16
[0.71127883 0.16178949 0.57974356 0.92394061 0.29455775 0.44950361
0.30519271 0.23295048 0.24572958 0.85217598]
[0.71 0.16 0.58 0.92 0.29 0.45 0.31 0.23 0.25 0.85]

numpy常见的数据类型

查看数组的形状(几行几列)

一维数组

a1 = np.arange(12)
print(a1)
a1.shape [ 0 1 2 3 4 5 6 7 8 9 10 11]

二维数组

a2 = np.array([[1,2,3],[4,5,6]])
print(a2)
a2.shape [[1 2 3]
[4 5 6]]

三维数组

a3 = np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]])
print(a3)
a3.shape [[[ 1 2 3]
[ 4 5 6]] [[ 7 8 9]
[10 11 12]]]

改变数组的形状

b1 = np.arange(12)
b1.reshape(3,4) # 将原数组形状变成3行4列的二维数组 array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
b2 = np.arange(24).reshape((2,3,4))   # 2表示块儿数 (3,4)表示每一块的形状
print(b2) b2.reshape(4,6) # 将b2变形为4行6列的2维数组 reshape是有返回值的 不会改变b2原来的数据 # 将b2变形为1维数的两种方式
b2.flatten()
b2.reshape((24,)) [[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]] [[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]] array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23])

数组的计算

数组和数字进行计算(广播机制)

c1 = np.arange(12)
print(c1) # (广播机制) 当我们把数组与数字进行计算的时候 它会把计算的过程应用到数组的每一个数字 然后分别计算 c1+2 [ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
c1*2 [ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22]
c1/2 [0. , 0.5, 1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5, 5. , 5.5]
c1/0 [nan, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf]

数组与数组之间的计算(形状相同)

c2 = np.arange(24)
c3 = np.arange(100,124)
print(c2,c3) # 当数组中的数据长度相同时
# 两个数组中的数据一一对应进行计算
c2+c3 [100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124,
126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146] c2*c3 [ 0, 101, 204, 309, 416, 525, 636, 749, 864, 981, 1100,
1221, 1344, 1469, 1596, 1725, 1856, 1989, 2124, 2261, 2400, 2541,
3 2684, 2829] c2/c3 [0. , 0.00990099, 0.01960784, 0.02912621, 0.03846154,
0.04761905, 0.05660377, 0.06542056, 0.07407407, 0.08256881,
0.09090909, 0.0990991 , 0.10714286, 0.11504425, 0.12280702,
0.13043478, 0.13793103, 0.14529915, 0.15254237, 0.15966387,
0.16666667, 0.17355372, 0.18032787, 0.18699187]

数组和形状不一样的数组进行计算

# 当他们在某一维度形状一样时是可以进行计算的
n1 = np.arange(12).reshape((4,3))
n2 = np.arange(4).reshape((4,1))
print(n1)
print(n2)
n1+n2 # n1与n2行数相同 array([[ 0, 1, 2],
[ 4, 5, 6],
[ 8, 9, 10],
[12, 13, 14]])

总结:

两个不同形状的数组 只要在某一维度相同就是可以计算的
  - 如果所有维度都不相同 是不可以计算的

numpy读取数据

行列转换

s1 = np.arange(24).reshape(4,6)
print(s1) [[ 0 1 2 3 4 5]
[ 6 7 8 9 10 11]
[12 13 14 15 16 17]
[18 19 20 21 22 23]]

方法一

np.loadtxt(frame,unpack=True)  # loadtxt中的unpack设置为True也是可以将从文件读取出来的数据进行行列转换的

方法二

s1.transpose()

方法三

s1.T

方法四

# 0代表x轴,1代表y轴
s1.swapaxes(1,0) # 交换轴

numpy的索引和切片

z1 = np.arange(24).reshape(4,6)

[[ 0  1  2  3  4  5]
[ 6 7 8 9 10 11]
[12 13 14 15 16 17]
[18 19 20 21 22 23]]

行操作

# 取行
print(z1[2]) # 中括号就是取行 # 连续取多行
print(z1[[1,2]])
print(z1[1:]) # 取不连续多行
print(z1[[1,3]])

列操作

# 取列
print(z1[:,1]) # 取连续多列
print(z1[:,3:]) # 取不连续多列
print(z1[:,[1,3,5]])

取行和列

# 取行和列的值  取第3行4列的值      这里注意我们在取值时用的都是索引,行和列都是从0开始, 而我们正常都是从1开始数行和列的
print(z1[2,3]) z2 = np.arange(100).reshape(10,10)
print(z2)
# 取多行和多列 取第3行到第6行 第2列到第5列的结果
print(z2[2:6,1:5]) # 取得是行和列交叉点得位置 # 取多个不相邻得值
# print(z2[[1,2],[2,4]]) # 分别取第2行的第3列 和 第3行的第5列的值 选出来的点就是(1,2) (2,4) print(z2[[6,7,8],[6,7,8]]) # 选出来的点是(6,6) (7,7) (8,8)

numpy中数值修改

重新赋值

# 取到值后重新赋值即可
res = np.arange(12).reshape(3,4)
# 将6修改为100
res[1,2]=100
print(res) # 修改多个值
res[1:2]=[3,3,3,4]
print(res)
[[  0   1   2   3]
[ 4 5 100 7]
[ 8 9 10 11]]
[[ 0 1 2 3]
[ 3 3 3 4]
[ 8 9 10 11]]

根据范围取值

ret = np.arange(100).reshape(10,10)
print(ret) # 根据范围取值
ret[ret<50] = 666
print(ret) [[ 0 1 2 3 4 5 6 7 8 9]
[10 11 12 13 14 15 16 17 18 19]
[20 21 22 23 24 25 26 27 28 29]
[30 31 32 33 34 35 36 37 38 39]
[40 41 42 43 44 45 46 47 48 49]
[50 51 52 53 54 55 56 57 58 59]
[60 61 62 63 64 65 66 67 68 69]
[70 71 72 73 74 75 76 77 78 79]
[80 81 82 83 84 85 86 87 88 89]
[90 91 92 93 94 95 96 97 98 99]] [[666 666 666 666 666 666 666 666 666 666]
[666 666 666 666 666 666 666 666 666 666]
[666 666 666 666 666 666 666 666 666 666]
[666 666 666 666 666 666 666 666 666 666]
[666 666 666 666 666 666 666 666 666 666]
[ 50 51 52 53 54 55 56 57 58 59]
[ 60 61 62 63 64 65 66 67 68 69]
[ 70 71 72 73 74 75 76 77 78 79]
[ 80 81 82 83 84 85 86 87 88 89]
[ 90 91 92 93 94 95 96 97 98 99]]

三元运算

tt = np.arange(100).reshape(10,10)
np.where(tt<50,0,1) # 所有小于50的替换成0,大于50的替换成1 array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]])

numpy中的clip(裁剪)

w = np.arange(100).reshape(10,10)
w.clip(50,60) # 将小于50的替换成50,大于60的替换成60 array([[50, 50, 50, 50, 50, 50, 50, 50, 50, 50],
[50, 50, 50, 50, 50, 50, 50, 50, 50, 50],
[50, 50, 50, 50, 50, 50, 50, 50, 50, 50],
[50, 50, 50, 50, 50, 50, 50, 50, 50, 50],
[50, 50, 50, 50, 50, 50, 50, 50, 50, 50],
[50, 51, 52, 53, 54, 55, 56, 57, 58, 59],
[60, 60, 60, 60, 60, 60, 60, 60, 60, 60],
[60, 60, 60, 60, 60, 60, 60, 60, 60, 60],
[60, 60, 60, 60, 60, 60, 60, 60, 60, 60],
[60, 60, 60, 60, 60, 60, 60, 60, 60, 60]])

数组的拼接

数组的行列转换

numpy生成随机数

numpy中的nan和inf

nan注意点

axis=0 取的是列上的每一行数据

axis=1  取得是行上得每一列数据

什么是中值?

[1,2,3,4,5]    # 中值为3
[1,2,3,4,5,6] # 中值为 (3+4)/2 = 3.5

numpy中常用得统计函数

numpy中的删除操作

数据分析之numpy使用的更多相关文章

  1. 利用Python进行数据分析(5) NumPy基础: ndarray索引和切片

    概念理解 索引即通过一个无符号整数值获取数组里的值. 切片即对数组里某个片段的描述. 一维数组 一维数组的索引 一维数组的索引和Python列表的功能类似: 一维数组的切片 一维数组的切片语法格式为a ...

  2. 数据分析入门——numpy类库基础知识

    numpy类库是数据分析的利器,用于高性能的科学计算和数据分析.使用python进行数据分析,numpy这个类库是必须掌握的.numpy并没有提供强大的数据分析功能,而是它提供的ndarray数据结构 ...

  3. 数据分析 之 NumPy

    目录 简单了解数据分析 Python数据分析三剑客(Numpy,Pandas,Matplotlib) 简单使用np.array() 使用np的routines函数创建数组 ndarray N维数组对象 ...

  4. 数据分析01 /numpy模块

    数据分析01 /数据分析之numpy模块 目录 数据分析01 /数据分析之numpy模块 1. numpy简介 2. numpy的创建 3. numpy的方法 4. numpy的常用属性 5. num ...

  5. 利用Python进行数据分析(4) NumPy基础: ndarray简单介绍

    一.NumPy 是什么 NumPy 是 Python 科学计算的基础包,它专为进行严格的数字处理而产生.在之前的随笔里已有更加详细的介绍,这里不再赘述. 利用 Python 进行数据分析(一)简单介绍 ...

  6. 数据分析之Numpy基础:数组和适量计算

    Numpy(Numerical Python)是高性能科学计算和数据分析的基础包. 1.Numpy的ndarray:一种多维数组对象 对于每个数组而言,都有shape和dtype这两个属性来获取数组的 ...

  7. Python数据分析之numpy学习

    Python模块中的numpy,这是一个处理数组的强大模块,而该模块也是其他数据分析模块(如pandas和scipy)的核心. 接下面将从这5个方面来介绍numpy模块的内容: 1)数组的创建 2)有 ...

  8. 《利用python进行数据分析》NumPy基础:数组和矢量计算 学习笔记

    一.有关NumPy (一)官方解释 NumPy is the fundamental package for scientific computing with Python. It contains ...

  9. Python数据分析(二): Numpy技巧 (1/4)

    In [1]: import numpy numpy.__version__ Out[1]: '1.13.1' In [2]: import numpy as np  

  10. Python数据分析(二): Numpy技巧 (2/4)

    numpy.pandas.matplotlib(+seaborn)是python数据分析/机器学习的基本工具. numpy的内容特别丰富,我这里只能介绍一下比较常见的方法和属性.   昨天晚上发了第一 ...

随机推荐

  1. hdu 4324

    思路待整理 #include<cstdio> #include<iostream> #include<vector> #include<queue> # ...

  2. 写给Web开发人员看的Nginx介绍

    译者注:不知道其他开发者是否和我一样,参与或者写了很多Web项目,但是却没有真正的去完整的部署应用,很多时候都是交给ops即运维的同学帮忙来做.而作为一个有节操的开发者,我认为了解一些服务器方面的知识 ...

  3. MarkDown 语法大全查询

    目录 1. 斜体和粗体 2. 分级标题 3. 超链接 3.1. 行内式 3.2. 参考式 3.3. 自动链接 4. 锚点 5. 列表 5.1. 无序列表 5.2. 有序列表 5.3. 定义型列表 5. ...

  4. MYSQL日期相关操作

    *******MYSQL中取当前周/月/季/年的第一天与最后一天******* 当年第一天: SELECT DATE_SUB(CURDATE(),INTERVAL dayofyear(now())-1 ...

  5. 整理一下Promise 的用法

    Promise 的定义 Pormise是JS的异步编程的一种解决方案,在ES6将其写进了语言标准,提供了原生的Promise对象. Promise简单来理解就是一个容器,里面存放着某个未来才会结束的事 ...

  6. MMU简介

    MMU(Memory Management Unit)内存管理单元 负责虚拟地址到物理地址的映射,并提供硬件机制的内存访问权限检查.内存访问权限的检查可以保护每个进程所用的内存不会被其他进程所破坏 地 ...

  7. leetcode-29.两数相除(不用乘除法和mod)

    如题,不用乘除法和mod实现两数相除. 这里引用一位clever boy 的解法. class Solution { public: int divide(int dividend, int divi ...

  8. vue v-cloak 指令 处理页面显示源码

    有时候页面会先出现源码,再显示解析的内容.可以通过v-cloak解决 v-cloak 这个指令会作为元素的一个属性一直保持到vue实例编译结束,即解析后移除此指令. /* 含有v-cloak的html ...

  9. 更优雅地关闭资源 - try-with-resource及其异常抑制--转载

    原文地址:https://www.cnblogs.com/itZhy/p/7636615.html 一.背景 我们知道,在Java编程过程中,如果打开了外部资源(文件.数据库连接.网络连接等),我们必 ...

  10. webstorm 2018.2.5最新激活方式

    亲测时间    2019年6月27日  08:45:52 下载破解文件: https://pan.baidu.com/s/1CMh5AYgewZflMVWL9BO-hA 打开webstorm / bi ...