numpy 基本使用1
Numpy是一个非常强大的库,具有大量线性代数以及大规模科学计算的方法。
#-*- coding:utf-8 -*-
import numpy as np #Numpy生成一维数组
a=np.array([1,2,3])
print type(a)
print a.shape
print a[0],a[1],a[2]
a[0]=5
print a
print '-'*100
# 输出
# <type 'numpy.ndarray'>
# (3L,)
# 1 2 3
# [5 2 3] #Numpy生成二维数组
b=np.array([[1,2,3],[4,5,6]])
print b
print b.shape
print b[0,0],b[0,1],b[1,0]
print '-'*100
# 输出
# [[1 2 3]
# [4 5 6]]
# (2L, 3L)
# 1 2 4 #numpy创建数组
a=np.zeros((2,2))#创建2x2的全0数组
print a
b=np.ones((1,2))#创建1x2的全1数组
print b
c=np.full((2,2),7)#创建2x2的全为7的数组
print c
d=np.eye(2)#创建单位数组
print d
e=np.random.random((2,2))#创建2x2的随机数组
print e
print '-'*100
# 输出
# [[ 0. 0.]
# [ 0. 0.]]
# [[ 1. 1.]]
# [[7 7]
# [7 7]]
# [[ 1. 0.]
# [ 0. 1.]]
# [[ 0.22054647 0.57186555]
# [ 0.79464255 0.90896572]] #numpy的多种访问数组的方法
a = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])
b = a[:2, 1:3]#0,1行 1,2列
print b
print a[0, 1]#第0行 第1列
b[0, 0] = 77
print a[0, 1]
print '-'*100
# 输出
# [[2 3]
# [6 7]]
#
# a = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])
row_r1 = a[1, :]#取第二行,4列
row_r2 = a[1:2, :]#取第二行,1行X4列
print row_r1, row_r1.shape
print row_r2, row_r2.shape
print '-'*100
# 输出
# [5 6 7 8] (4L,)
# [[5 6 7 8]] (1L, 4L) col_r1 = a[:, 1] #取第二列,3列
col_r2 = a[:, 1:2]#取第二列,3行X1列
print col_r1, col_r1.shape
print col_r2, col_r2.shape
print '-'*100
# 输出
# [ 2 6 10] (3L,)
# [[ 2]
# [ 6]
# [10]] (3L, 1L) a = np.array([[1,2], [3, 4], [5, 6]])
print a[[0, 1, 2], [0, 1, 0]] #输出a[0,0] a[1,1] a[2,0]
print np.array([a[0, 0], a[1, 1], a[2, 0]])
print '-'*100
# 输出
# [1 4 5]
# [1 4 5] a = np.array([[1,2,3], [4,5,6], [7,8,9], [10, 11, 12]])
print a
b = np.array([0, 2, 0, 1])
print a[np.arange(4), b]#输出a[0,0] a[1,2] a[2,0] a[3,1]
a[np.arange(4), b] += 10
print a
print '-'*100
# 输出
# [[ 1 2 3]
# [ 4 5 6]
# [ 7 8 9]
# [10 11 12]]
# [ 1 6 7 11]
# [[11 2 3]
# [ 4 5 16]
# [17 8 9]
# [10 21 12]] a = np.array([[1,2], [3, 4], [5, 6]])
bool_idx = (a > 2) #当a大于2时为True,否则为False
print bool_idx
print a[bool_idx] #true输出,false不输出
print a[a > 2] #符合a>2时输出
print '-'*100
# 输出
# [[False False]
# [ True True]
# [ True True]]
# [3 4 5 6]
# [3 4 5 6] x = np.array([1, 2])
print x.dtype
x = np.array([1.0, 2.0])
print x.dtype
x = np.array([1, 2], dtype=np.int64)
print x.dtype
print '-'*100
# 输出
# int32
# float64
# int64 x = np.array([[1,2],[3,4]], dtype=np.float64)
y = np.array([[5,6],[7,8]], dtype=np.float64)
print x + y
print np.add(x, y)
print x - y
print np.subtract(x, y)
print x * y
print np.multiply(x, y)
print x / y
print np.divide(x, y)
print np.sqrt(x)
print '-'*100
# 输出
# [[ 6. 8.]
# [ 10. 12.]]
# [[ 6. 8.]
# [ 10. 12.]]
# [[-4. -4.]
# [-4. -4.]]
# [[-4. -4.]
# [-4. -4.]]
# [[ 5. 12.]
# [ 21. 32.]]
# [[ 5. 12.]
# [ 21. 32.]]
# [[ 0.2 0.33333333]
# [ 0.42857143 0.5 ]]
# [[ 0.2 0.33333333]
# [ 0.42857143 0.5 ]]
# [[ 1. 1.41421356]
# [ 1.73205081 2. ]] x = np.array([[1,2],[3,4]])
y = np.array([[5,6],[7,8]])
v = np.array([9,10])
w = np.array([11, 12])
print v.dot(w)
print np.dot(v, w)#9x11+10x12
print x.dot(v)
print np.dot(x, v)
print x.dot(y)#矩阵X x 矩阵Y
print np.dot(x, y)
print '-'*100
# 输出
#
#
# [29 67]
# [29 67]
# [[19 22]
# [43 50]]
# [[19 22]
# [43 50]] x = np.array([[1,2],[3,4]])
print np.sum(x)
print np.sum(x, axis=0)#行相加
print np.sum(x, axis=1)#列相加
print '-'*100
# 输出
#
# [4 6]
# [3 7] #矩阵的逆
x = np.array([[1,2], [3,4]])
print x
print x.T
v = np.array([1,2,3])
print v
print v.T
print '-'*100
# 输出
# [[1 2]
# [3 4]]
# [[1 3]
# [2 4]]
# [1 2 3]
# [1 2 3] #广播Broadcasting
x = np.array([[1,2,3], [4,5,6], [7,8,9], [10, 11, 12]])
v = np.array([1, 0, 1])
y = np.empty_like(x)
for i in range(4):
y[i, :] = x[i, :] + v#每行与v相加
print y y = x + v
print y vv = np.tile(v, (4, 1))
print vv
y = x + vv
print y
print '-'*100
# 输出
# [[ 2 2 4]
# [ 5 5 7]
# [ 8 8 10]
# [11 11 13]]
# [[ 2 2 4]
# [ 5 5 7]
# [ 8 8 10]
# [11 11 13]]
# [[1 0 1]
# [1 0 1]
# [1 0 1]
# [1 0 1]]
# [[ 2 2 4]
# [ 5 5 7]
# [ 8 8 10]
# [11 11 13]] v = np.array([1,2,3])
w = np.array([4,5])
print np.reshape(v, (3, 1))#将1行x3列的v转换成3行x1列矩阵
print np.reshape(v, (3, 1)) * w
x = np.array([[1,2,3], [4,5,6]])
print x + v
print (x.T + w).T
print x + np.reshape(w, (2, 1))
print x * 2
# 输出
# [[1]
# [2]
# [3]]
# [[ 4 5]
# [ 8 10]
# [12 15]]
# [[2 4 6]
# [5 7 9]]
# [[ 5 6 7]
# [ 9 10 11]]
# [[ 5 6 7]
# [ 9 10 11]]
# [[ 2 4 6]
# [ 8 10 12]]
numpy 基本使用1的更多相关文章
- 利用Python进行数据分析(5) NumPy基础: ndarray索引和切片
概念理解 索引即通过一个无符号整数值获取数组里的值. 切片即对数组里某个片段的描述. 一维数组 一维数组的索引 一维数组的索引和Python列表的功能类似: 一维数组的切片 一维数组的切片语法格式为a ...
- 利用Python进行数据分析(4) NumPy基础: ndarray简单介绍
一.NumPy 是什么 NumPy 是 Python 科学计算的基础包,它专为进行严格的数字处理而产生.在之前的随笔里已有更加详细的介绍,这里不再赘述. 利用 Python 进行数据分析(一)简单介绍 ...
- 利用Python进行数据分析(6) NumPy基础: 矢量计算
矢量化指的是用数组表达式代替循环来操作数组里的每个元素. NumPy提供的通用函数(既ufunc函数)是一种对ndarray中的数据进行元素级别运算的函数. 例如,square函数计算各元素的平方,r ...
- python安装numpy、scipy和matplotlib等whl包的方法
最近装了python和PyCharm开发环境,但是在安装numpy和matplotlib等包时出现了问题,现总结一下在windows平台下的安装方法. 由于现在找不到了工具包新版本的exe文件,所以采 ...
- 深入理解numpy
一.为啥需要numpy python虽然说注重优雅简洁,但它终究是需要考虑效率的.别说运行速度不是瓶颈,在科学计算中运行速度就是瓶颈. python的列表,跟java一样,其实只是一维列表.一维列表相 ...
- Python Numpy,Pandas基础笔记
Numpy Numpy是python的一个库.支持维度数组与矩阵计算并提供大量的数学函数库. arr = np.array([[1.2,1.3,1.4],[1.5,1.6,1.7]])#创建ndarr ...
- broadcasting Theano vs. Numpy
broadcasting Theano vs. Numpy broadcast mechanism allows a scalar may be added to a matrix, a vector ...
- python之numpy
一.矩阵的拼接合并 列拼接:np.column_stack() >>> import numpy as np >>> a = np.arange(9).reshap ...
- win7系统下python安装numpy,matplotlib,scipy和scikit-learn
1.安装numpy,matplotlib,scipy和scikit-learn win7系统下直接采用pip或者下载源文件进行安装numpy,matplotlib,scipy时会遇到各种问题,这是因为 ...
- 给numpy矩阵添加一列
问题的定义: 首先我们有一个数据是一个mn的numpy矩阵现在我们希望能够进行给他加上一列变成一个m(n+1)的矩阵 import numpy as np a = np.array([[1,2,3], ...
随机推荐
- java报错java/lang/NoClassDefFoundError: java/lang/Object
安装完java出错 javac和java -version 都无效,报错如上 解决方法,更改文件中的两个文件(前提是你的 vim /etc/profile 文件路径写的正确) /usr/java/ ...
- 理解Defer、Panic和Recover
刚开始的时候理解如何使用Defer和Recover有一点怪异,尤其是使用了try/catch块的时候.有一种模式可以在Go中实现和try/catch语句块一样的效果.不过之前你需要先领会Defer.P ...
- Airplace平台
Demo: 左上角:(0, 0)开始导航,手机终端上实时在地图上当前所在显示,当前点以绿色点显示,轨迹点以红色显示. 系统架构:基于移动手机的以网络为辅助的架构.特点:低头顶交流,用户隐私和安全 &g ...
- (KMP 根据循环节来计算)Period -- hdu -- 1358
http://acm.hdu.edu.cn/showproblem.php?pid=1358 Period Time Limit: 2000/1000 MS (Java/Others) Memo ...
- Selenium2+python自动化之读取Excel数据(xlrd)
前言 当登录的账号有多个的时候,我们一般用excel存放测试数据,本节课介绍,python读取excel方法,并保存为字典格式. 一.环境准备 1.先安装xlrd模块,打开cmd,输入pip inst ...
- C++中的inline声明
C++中的inline声明 1. inline函数(摘自C++ Primer的第三版) 在函数声明或定义中函数返回类型前加上关键字inline即把函数指定为内联函数. inline int min(i ...
- Banana
Banana 除了有香蕉的意思外,还表示 喜剧演员
- mac下能同时安装两个版本的xcode吗
http://www.cocoachina.com/bbs/read.php?tid-288160-page-1.html
- DAC--使用DAC来导出数据库脚本
//============================================== //功能介绍:使用DAC来导出数据库脚本 //注意事项: //1.本程序涉及到的DLL有: // - ...
- C# OleDbConnection对特定部分Excel的数据读取
最近在写winform程序,先来一个简单的. 读取特定部分Excel的数据读取,读取Excel第30行开始到H列的数据 using System;using System.Collections.Ge ...