数据分析_numpy_基础1

创建数组

方法 说明
np.array( x ) 将输入数据转化为一个ndarray|
np.array( x, dtype ) 将输入数据转化为一个类型为type的ndarray|
np.asarray( array ) 将输入数据转化为一个新的(copy)
np.ones( N ) 生成一个N长度的一维全一ndarray
np.ones( N, dtype) 生成一个N长度类型是dtype的一维全一ndarray
np.ones_like( ndarray ) 生成一个形状与参数相同的全一ndarray
np.zeros( N) 生成一个N长度的一维全零ndarray
np.zeros( N, dtype) 生成一个N长度类型位dtype的一维全零ndarray
np.zeros_like(ndarray) 类似np.ones_like( ndarray )
np.empty( N ) 生成一个N长度的未初始化一维ndarray
np.empty( N, dtype) 生成一个N长度类型是dtype的未初始化一维ndarray
np.empty(ndarray) 类似np.ones_like( ndarray )
np.eye( N ) 创建一个N * N的单位矩阵(对角线为1,其余为0)
np.identity( N )
np.arange( num) 生成一个从0到num-1步数为1的一维ndarray
np.arange( begin, end) 生成一个从begin到end-1步数为1的一维ndarray
np.arange( begin, end, step) 生成一个从begin到end-step的步数为step的一维ndarray
np.mershgrid(ndarray, ndarray,...) 生成一个ndarray * ndarray * ...的多维ndarray
np.where(cond, ndarray1, ndarray2) 根据条件cond,选取ndarray1或者ndarray2,返回一个新的ndarray
np.in1d(ndarray, [x,y,...]) 检查ndarray中的元素是否等于[x,y,...]中的一个,返回bool数组

array 创建数组

import numpy as np

np.array([[1,2],[3,4]])

arr = [1,2,3,4,5,6,7]
a = np.array(arr)
a
###############
array([1, 2, 3, 4, 5, 6, 7])

zeros 创建默认0的数组

a = np.zeros(3)
print ('a:',a)
b = np.zeros((3,3))
print('b:',b)
c = np.zeros_like(a)
print('c:',c) ###############
a: [0. 0. 0.]
b: [[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]]
c: [0. 0. 0.]

ones 创建默认1的数组

a = np.ones(3)
print ('a:',a)
b = np.ones((3,3))
print('b:',b)
c = np.ones_like(b)
print('c:',c) ###############
a: [1. 1. 1.]
b: [[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]
c: [[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]

empty 创建默认值 随机的数组

print (np.empty((2)))
print(np.empty((2,4))) ###############
[-5.73021895e-300 6.92466535e-310]
[[6.92449667e-310 5.02034658e+175 6.03195894e+174 2.73950109e-057]
[7.12194759e-067 2.10979251e-052 1.47763641e+248 1.16096346e-028]]

random.randn 随机值数组

np.random.randn(6)
###############
array([ 0.84344504, -0.73714262, 0.93808627, -1.00264675, -0.17058495,
0.4664123 ])

random.randn 随机值多维数组

np.random.randn(2,2)
###############
array([[ 0.38153354, -0.92519611],
[-1.3137341 , -1.26921917]])

arange 创建序列数组

## arange 0-9
print(np.arange(10)) ## arange 5-15
print(np.arange(5,15)) ## arange 13579
print(np.arange(1,10,2)) ###############
[0 1 2 3 4 5 6 7 8 9]
[ 5 6 7 8 9 10 11 12 13 14]
[1 3 5 7 9] ## eye identity 创建对角线为一的多维数组
a = np.eye(4)
print(a)
np.identity(4)
###############
[[1. 0. 0. 0.]
[0. 1. 0. 0.]
[0. 0. 1. 0.]
[0. 0. 0. 1.]]
array([[1., 0., 0., 0.],
[0., 1., 0., 0.],
[0., 0., 1., 0.],
[0., 0., 0., 1.]])
np.eye(3,3,3)

###############
array([[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.]])

reshape 一维转多维

a = np.arange(4).reshape(2,2)
print(a)
###############
[[0 1]
[2 3]]

meshgrid 生成一个ndarray * ndarray * ...的多维ndarray

x = np.array([0, 1, 2])
y = np.array([0, 1]) X, Y = np.meshgrid(x, y)
print(X)
print(Y)
###############
[[0 1 2]
[0 1 2]]
[[0 0 0]
[1 1 1]]

常用方法

ndim 查看数据维度

shape 查看数据维度大小

dtype 查看数据类型

a = np.random.randn(3,3,3)
# 查看数据维度
print(a.ndim)
# 查看数据维度大小
print(a.shape)
# dtype 查看数据类型
print(a.dtype) 3
(3, 3, 3)
float64

astype转换数据类型

a = np.eye(5,5)
print(a.dtype) b = a.astype(np.int64).dtype
print(b) ###############
float64
int64

数学运算 加减乘除

# +
a = np.arange(4).reshape(2,2)
print(a)
print('++++++++')
print(a+1)
# -
print('--------')
print(a-1)
# *
print('********')
print(a*2)
# /
print('////////')
print(1/(a+1)) ###############
[[0 1]
[2 3]]
++++++++
[[1 2]
[3 4]]
--------
[[-1 0]
[ 1 2]]
********
[[0 2]
[4 6]]
////////
[[1. 0.5 ]
[0.33333333 0.25 ]]

比较运算

a = np.arange(6,0,-1).reshape(2,3)
b = np.arange(3,9).reshape(2,3)
print(a,b,a>b,sep='\n') ###############
[[6 5 4]
[3 2 1]]
[[3 4 5]
[6 7 8]]
[[ True True False]
[False False False]]

切片和索引

一维切片同py list

a = np.arange(10)
print(a)
print(a[5])
print(a[5:8])
a[5:8] = 12
print(a) ###############
[0 1 2 3 4 5 6 7 8 9]
5
[5 6 7]
[ 0 1 2 3 4 12 12 12 8 9]

切片后不等copy

b = a[5:8]
print(b)
b[1] = 21
print(a) ###############
[12 12 12]
[ 0 1 2 3 4 12 21 12 8 9]
# 切片给数组赋值
a[:] = 0
a
###############
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])

copy 复制

# 复制
b = a[2:5].copy()
print(b)
b[:] = 11
print(b)
print(a)
###############
[0 0 0]
[11 11 11]
[0 0 0 0 0 0 0 0 0 0]

多维数组

# 多维数组
a2d = np.arange(6).reshape(2,3)
print(a2d)
# 两种取值方式,结果一样
print(a2d[0][2])
print(a2d[0,2])
###############
[[0 1 2]
[3 4 5]]
2
2
# 多维数组
a3d = np.arange(1,13).reshape(2,2,3)
print(a3d)
print(a3d.ndim)
print(a3d[0])
print(a3d[0].ndim) ###############
[[[ 1 2 3]
[ 4 5 6]] [[ 7 8 9]
[10 11 12]]]
3
[[1 2 3]
[4 5 6]]
2

标量值和数组都可以赋值

# 标量值和数组都可以赋值给 a3d
tmp = a3d[0].copy()
a3d[0] = 99
print(a3d)
a3d[0] = tmp
print(a3d) ###############
[[[99 99 99]
[99 99 99]] [[ 7 8 9]
[10 11 12]]]
[[[ 1 2 3]
[ 4 5 6]] [[ 7 8 9]
[10 11 12]]]

多维数组 切片索引

选行

a = np.eye(4)
# 选2 3 行
a[[2,3]]
###############
array([[0., 0., 1., 0.],
[0., 0., 0., 1.]])

选列

a[:][2]
###############
array([0., 0., 1., 0.])
a2d = np.arange(9).reshape(3,3)
print(a2d)
# 选择前2
print(a2d[:2])
# 选择 0 1 的0
print(a2d[:2,:1])
# 选择0 1 的 1 2
print(a2d[:2,1:])
# 选择 1 的 1 2
print(a2d[1,1:])
###############
[[0 1 2]
[3 4 5]
[6 7 8]]
[[0 1 2]
[3 4 5]]
[[0]
[3]]
[[1 2]
[4 5]]
[4 5]
a2d[:2,1:] = 0
a2d
###############
array([[0, 0, 0],
[3, 0, 0],
[6, 7, 8]])

布尔型,索引

names = np.array(['Bob', 'Joe', 'Will', 'Bob', 'Will', 'Joe', 'Joe'])
data = np.random.randn(7,4)
print(names,data,sep='/n')
print(names == 'Bob')
###############
['Bob' 'Joe' 'Will' 'Bob' 'Will' 'Joe' 'Joe']/n[[-0.75689604 0.88583323 -1.49689044 0.95657837]
[-1.41937221 -0.22434237 1.74661417 0.08943732]
[ 1.55542971 -1.73335114 0.22718931 0.07517303]
[ 2.97463647 1.26849374 -0.38591486 0.1239141 ]
[-1.0057703 -0.26292255 1.42444036 -2.02698881]
[-0.00814679 0.38637696 -0.49233058 -1.13374044]
[-1.03599764 -1.3238696 -0.70148144 0.59657573]]
[ True False False True False False False]
print(data[names == 'Bob'])
print(data[names == 'Bob',2:])
print(data[names == 'Bob',3])
###############
[[-0.75689604 0.88583323 -1.49689044 0.95657837]
[ 2.97463647 1.26849374 -0.38591486 0.1239141 ]]
[[-1.49689044 0.95657837]
[-0.38591486 0.1239141 ]]
[0.95657837 0.1239141 ]
print(names != 'Bob')
print(data[~(names == 'Bob')])
print(((names == 'Bob') | (names == 'Will')))
###############
[False True True False True True True]
[[-1.41937221 -0.22434237 1.74661417 0.08943732]
[ 1.55542971 -1.73335114 0.22718931 0.07517303]
[-1.0057703 -0.26292255 1.42444036 -2.02698881]
[-0.00814679 0.38637696 -0.49233058 -1.13374044]
[-1.03599764 -1.3238696 -0.70148144 0.59657573]]
[ True False True True True False False]
data[data<0] = 0
data
###############
array([[0. , 0.88583323, 0. , 0.95657837],
[0. , 0. , 1.74661417, 0.08943732],
[1.55542971, 0. , 0.22718931, 0.07517303],
[2.97463647, 1.26849374, 0. , 0.1239141 ],
[0. , 0. , 1.42444036, 0. ],
[0. , 0.38637696, 0. , 0. ],
[0. , 0. , 0. , 0.59657573]])
data[names != 'Joe'] = 7
data
###############
array([[7. , 7. , 7. , 7. ],
[0. , 0. , 1.74661417, 0.08943732],
[7. , 7. , 7. , 7. ],
[7. , 7. , 7. , 7. ],
[7. , 7. , 7. , 7. ],
[0. , 0.38637696, 0. , 0. ],
[0. , 0. , 0. , 0.59657573]])
a = np.empty((8,4))
for i in range(8):
a[i] = i
a
###############
array([[0., 0., 0., 0.],
[1., 1., 1., 1.],
[2., 2., 2., 2.],
[3., 3., 3., 3.],
[4., 4., 4., 4.],
[5., 5., 5., 5.],
[6., 6., 6., 6.],
[7., 7., 7., 7.]])
# 以特定顺序选取子集
print(a[[5,2,1]])
# 以顺序选取列
a[:,2]
###############
[[5. 5. 5. 5.]
[2. 2. 2. 2.]
[1. 1. 1. 1.]] array([0., 1., 2., 3., 4., 5., 6., 7.])
# 负索引
print(a[[-3,-6,-7]])
print(a[[-3,-6,-7],[0,1,2]])
print(a[[-3,-6,-7]][:, [0,1]])
###############
[[5. 5. 5. 5.]
[2. 2. 2. 2.]
[1. 1. 1. 1.]]
[5. 2. 1.]
[[5. 5.]
[2. 2.]
[1. 1.]]

数组转置和轴对换

a = np.arange(8).reshape((2,4))
print(a)
print(a.T) ###############
[[0 1 2 3]
[4 5 6 7]]
[[0 4]
[1 5]
[2 6]
[3 7]]

dot计算内积

一维: x0*x1 + y0*y1
二维: arr2[0][0] = arr0[0][0] * arr1[0][0] + arr0[0][1] * arr1[1][0] (0*0 + 1*1)
arr2[0][1] = arr0[0][0] * arr1[0][1] + arr0[0][1] * arr1[1][1] (0*2 + 1*3)
arr2[1][0] = arr0[1][0] * arr1[0][0] + arr0[1][1] * arr1[1][0] (2*0 + 3*1)
arr2[1][1] = arr0[1][0] * arr1[0][1] + arr0[1][1] * arr1[1][1] (2*2 + 3*3)
a = np.arange(4).reshape((2,2))
print(a)
print(a.T) print(np.dot(a[0],a[1]))
print(np.dot(a, a.T)) ###############
[[0 1]
[2 3]]
[[0 2]
[1 3]]
3
[[ 1 3]
[ 3 13]]

transpose 交换坐标轴

维度 2 2 2 对应 012 相当交换维度

arr = np.arange(12).reshape((2, 2, 3))
print(arr)
arr.transpose((2,1,0))
###############
[[[ 0 1 2]
[ 3 4 5]] [[ 6 7 8]
[ 9 10 11]]] array([[[ 0, 6],
[ 3, 9]], [[ 1, 7],
[ 4, 10]], [[ 2, 8],
[ 5, 11]]])
arr = np.arange(9).reshape(3,3)
print(arr)
arr.transpose((1,0))
###############
[[0 1 2]
[3 4 5]
[6 7 8]]
array([[0, 3, 6],
[1, 4, 7],
[2, 5, 8]])

数据分析_numpy_基础1的更多相关文章

  1. 数据分析_numpy_基础2

    数据分析_numpy_基础2 sqrt 开方 arr = np.arange(10) arr # array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) np.sqrt(arr) ...

  2. 利用Python进行数据分析_Numpy_基础_3

    通用函数:快速的元素级数组函数 通用函数,是指对数组中的数据执行元素级运算的函数:接受一个或多个标量值,并产生一个或多个标量值. sqrt 求平方根 np.sqrt(arr) exp 计算各元素指数 ...

  3. 利用Python进行数据分析_Numpy_基础_2

      Numpy数据类型包括: int8.uint8.int16.uint16.int32.uint32.int64.uint64.float16.float32.float64.float128.co ...

  4. 利用Python进行数据分析_Numpy_基础_1

    ndarray:多维数组 ndarray 每个数组元素必须是相同类型,每个数组都有shape和dtype对象. shape 表示数组大小 dtype 表示数组数据类型 array 如何创建一个数组? ...

  5. 利用Python进行数据分析——Numpy基础:数组和矢量计算

    利用Python进行数据分析--Numpy基础:数组和矢量计算 ndarry,一个具有矢量运算和复杂广播能力快速节省空间的多维数组 对整组数据进行快速运算的标准数学函数,无需for-loop 用于读写 ...

  6. 数据分析——python基础

    前言:python数据分析的基础知识,简单总结,主要是为了方便自己写的时候查看(你们可能看不太清楚T^T),发现有用的方法,随时补充,欢迎指正 数据分析专栏: 数据分析--python基础 数据分析- ...

  7. Python数据分析——numpy基础简介

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:基因学苑 NumPy(Numerical Python的简称)是高性 ...

  8. Python数据分析(基础)

    目录: Python基础: Python基本用法:控制语句.函数.文件读写等 Python基本数据结构:字典.集合等 Numpy:简述 Pandas:简述 一. Python基础: 1.1 文件读取 ...

  9. python数据分析 Numpy基础 数组和矢量计算

    NumPy(Numerical Python的简称)是Python数值计算最重要的基础包.大多数提供科学计算的包都是用NumPy的数组作为构建基础. NumPy的部分功能如下: ndarray,一个具 ...

随机推荐

  1. JavaScript常见的六种继承方式

    前言 面向对象编程很重要的一个方面,就是对象的继承.A 对象通过继承 B 对象,就能直接拥有 B 对象的所有属性和方法.这对于代码的复用是非常有用的. 大部分面向对象的编程语言,都是通过"类 ...

  2. JavaScript两道例题

    1.有一个卡车司机肇事后想逃跑,但是被三个人看见其车牌号码,但是没有看全.一号说:车牌的前两位是一样的,二号说:车牌的后两位是一 样的,但是与前两位不一样,三号说:车牌是一个数字的平方,请计算车辆号牌 ...

  3. 东南大学RM装甲板识别算法详解

    rm中,装甲板的识别在比赛中可谓是最基础的算法.而在各个开源框架中,该算法也可以说最为成熟.出于学习目的,之后将对比多个高校或网络代码(),尝试学习各个rm装甲板识别算法的优点和流程. 这次先是东南大 ...

  4. MongoDB Compass最新版(v_1.20.5)远程连接数据库

    最近下载了最新版本的MongoDB Compass(v_1.20.5)后才发现软件较之前的版本有了很大的变化,主要体现在创建连接页面和连接方式上. 这是旧版的连接页面,所有的参数项以表单的形式列出,直 ...

  5. Tomcat8优化

    一.Tomcat8优化 Tomcat服务器在JavaEE项目中使用率非常高,所以在生产环境对Tomcat的优化也变得非常重要了. 对于Tomcat的优化,主要是从2个方面入手,一是,Tomcat自身的 ...

  6. python学习-练习题9*9乘法表巩固

    9*9乘法表 分析: 1X1为一行 1X2 2X2 为一行 for i in range(1,10): for j in range(1,i+1): print(str(i) + 'X' + str( ...

  7. 编译putty 源码去掉 Are you sure you want to close this session? 提示

    0, 为什么要编译 putty ?在关闭窗口的时候,会弹出一个 Are you sure you want to close this session?要把这个去掉.当然也可以用 OD 之类的来修改. ...

  8. 实验二 Samba服务器配置

    实验二 实 验 基 本 信 息 实验名称:Samba服务器配置 实验时间:    年 月 日 实验地点: 实验目的: 了解Samba环境及协议 掌握Samba的工作原理 掌握主配置文件Samba.co ...

  9. C语言实现简单计算器小项目

    昨天刚安装上devc++,半夜想着练练C语言吧 于是就看到实验楼有一个计算器的项目 之前做过一次,这次写的主要是思路 首先我们先从原理思考jia,实现简单的计算器就要具备加减乘除这些,看普通的计算器也 ...

  10. C++ 指针函数

    #include <stdio.h> #include <windows.h> using namespace std; template<typename T> ...