一、numpy入门
Array
import numpy as np
# create from python list
list_1 = [1, 2, 3, 4]
array_1 = np.array(list_1)#array([1, 2, 3, 4])
list_2 = [5, 6, 7, 8]
array_2 = np.array([list_1, list_2])
结果:
array([[1, 2, 3, 4],
[5, 6, 7, 8]])
array_2.shape#(2, 4)
array_2.size#8
array_2.dtype#dtype('int64')
array_3 = np.array([[1.0,2,3],[4.0,5,6]])
array_3.dtype#dtype('float64') array_4 = np.arange(1, 10, 2)#array([1, 3, 5, 7, 9])
np.zeros(5)#array([ 0., 0., 0., 0., 0.])
np.zeros([2,3])
结果:
array([[ 0., 0., 0.],
[ 0., 0., 0.]])
np.eye(5)
结果:
array([[ 1., 0., 0., 0., 0.],
[ 0., 1., 0., 0., 0.],
[ 0., 0., 1., 0., 0.],
[ 0., 0., 0., 1., 0.],
[ 0., 0., 0., 0., 1.]])
np.eye(5).dtype#dtype('float64')
a = np.arange(1,10)#array([1, 2, 3, 4, 5, 6, 7, 8, 9])
a[1]#2
a[1:5]#array([2, 3, 4, 5])
b = np.array([[1,2,3],[4,5,6]])
b
结果:
array([[1, 2, 3],
[4, 5, 6]])
b[1][0]#4
b[1,0]#4
c = np.array([[1,2,3],[4,5,6],[7,8,9]])
c
结果:
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
c[:2,1:]
结果:
array([[2, 3],
[5, 6]])
数组与矩阵运算
快速创建数组
import numpy as np
np.random.randn(10)
结果:
array([ 0.28906593, 1.4302902 , 1.10346334, 0.11146373, -0.47497452,
0.88859371, 0.18953089, -0.65780036, -2.06789973, -1.45679231])
np.random.randint(10, size=20).reshape(4, 5)
结果:
array([[8, 5, 8, 4, 5],
[4, 5, 2, 8, 3],
[3, 6, 9, 7, 3],
[3, 0, 4, 7, 0]])
数组运算
a = np.random.randint(10, size=20).reshape(4, 5)
b = np.random.randint(10, size=20).reshape(4, 5)
a
b
结果:
array([[3, 6, 5, 9, 3],
[3, 3, 4, 6, 8],
[3, 3, 2, 3, 4],
[6, 0, 9, 7, 9]]) array([[1, 5, 6, 0, 6],
[0, 2, 1, 7, 9],
[7, 6, 1, 3, 8],
[4, 4, 3, 1, 0]])
a + b
结果:
array([[ 4, 11, 11, 9, 9],
[ 3, 5, 5, 13, 17],
[10, 9, 3, 6, 12],
[10, 4, 12, 8, 9]])
a-b
结果:
array([[ 2, 1, -1, 9, -3],
[ 3, 1, 3, -1, -1],
[-4, -3, 1, 0, -4],
[ 2, -4, 6, 6, 9]])
a * b
结果:
array([[ 3, 30, 30, 0, 18],
[ 0, 6, 4, 42, 72],
[21, 18, 2, 9, 32],
[24, 0, 27, 7, 0]])
a / b
结果:
RuntimeWarning: divide by zero encountered in true_divide
"""Entry point for launching an IPython kernel. array([[ 3. , 1.2 , 0.83333333, inf, 0.5 ],
[ inf, 1.5 , 4. , 0.85714286, 0.88888889],
[ 0.42857143, 0.5 , 2. , 1. , 0.5 ],
[ 1.5 , 0. , 3. , 7. , inf]])
np.mat([[1,2,3],[4,5,6]])
结果:
matrix([[1, 2, 3],
[4, 5, 6]])
a
结果:
array([[3, 6, 5, 9, 3],
[3, 3, 4, 6, 8],
[3, 3, 2, 3, 4],
[6, 0, 9, 7, 9]])
np.mat(a)
结果:
matrix([[3, 6, 5, 9, 3],
[3, 3, 4, 6, 8],
[3, 3, 2, 3, 4],
[6, 0, 9, 7, 9]])
矩阵的运算
A = np.mat(a)
B = np.mat(b)
A
B
结果:
matrix([[3, 6, 5, 9, 3],
[3, 3, 4, 6, 8],
[3, 3, 2, 3, 4],
[6, 0, 9, 7, 9]]) matrix([[1, 5, 6, 0, 6],
[0, 2, 1, 7, 9],
[7, 6, 1, 3, 8],
[4, 4, 3, 1, 0]])
A + B
A - B
结果:
matrix([[ 4, 11, 11, 9, 9],
[ 3, 5, 5, 13, 17],
[10, 9, 3, 6, 12],
[10, 4, 12, 8, 9]]) matrix([[ 2, 1, -1, 9, -3],
[ 3, 1, 3, -1, -1],
[-4, -3, 1, 0, -4],
[ 2, -4, 6, 6, 9]])
A * B
结果: ValueError: shapes (4,5) and (4,5) not aligned: 5 (dim 1) != 4 (dim 0)
a = np.mat(np.random.randint(10, size=20).reshape(4, 5))
b = np.mat(np.random.randint(10, size=20).reshape(5, 4))
a
b
a * b
结果:
matrix([[4, 4, 3, 2, 7],
[4, 7, 2, 4, 5],
[8, 6, 6, 1, 0],
[5, 9, 6, 2, 8]]) matrix([[5, 8, 9, 2],
[8, 4, 3, 7],
[4, 6, 7, 0],
[5, 8, 5, 3],
[0, 6, 9, 5]]) matrix([[ 74, 124, 142, 77],
[104, 134, 136, 94],
[117, 132, 137, 61],
[131, 176, 196, 119]])
Array常用函数
a = np.random.randint(10, size=20).reshape(4, 5)
np.unique(a)#array([0, 1, 2, 3, 4, 5, 6, 8, 9])
a
结果:
array([[4, 1, 2, 5, 3],
[9, 8, 1, 4, 0],
[5, 4, 8, 0, 2],
[8, 6, 2, 4, 3]])
sum(a)#array([26, 19, 13, 13, 8])
sum(a[0])#15
sum(a[:,0])#26
a.max()#9
max(a[0])#5
max(a[:,0])#9
b = np.random.randint(5,10, size=20).reshape(4, 5)
np.unique(b)#array([5, 6, 7, 8, 9])
b
结果:
array([[6, 8, 7, 7, 9],
[5, 5, 5, 8, 5],
[6, 9, 6, 8, 6],
[6, 5, 8, 5, 9]])
Array的input和output
使用pickle序列化numpy array
import pickle
import numpy as np
x = np.arange(10)#array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
f = open('x.pkl', 'wb')
pickle.dump(x, f)
f = open('x.pkl', 'rb')
pickle.load(f)#array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
np.save('one_array', x)
np.load('one_array.npy')#array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
y = np.arange(20)#array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,17, 18, 19])
np.savez('two_array.npz', a=x, b=y)
c = np.load('two_array.npz')
c['a']#array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
c['b']#array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,17, 18, 19])
一、numpy入门的更多相关文章
- Numpy入门 - 生成数组
今天是Numpy入门系列教程第一讲,首先是安装Numpy: $ pip install numpy numpy是高性能科学计算和数据分析的基础包,本节主要介绍生成连续二维数组.随机二维数组和自定义二维 ...
- NumPy入门及基础
1.1 NumPy 数组对象 NumPy中的ndarray是一个多维数组对象,该对象由两部分组成: 实际的数据; 描述这些数据的元数据. 大部分的数组操作仅仅修改元数据部分,而不改变底层的实际 ...
- Numpy入门 - 线性代数运算
本节矩阵线性代数有很多内容,这里重点演示计算矩阵的行列式.求逆矩阵和矩阵的乘法. 一.计算矩阵行列式[det] import numpy as np from numpy.linalg import ...
- Numpy入门 - 行列式转置
本章实例讲解如何将一个数组对象进行转置,我们可以使用.T将行列数据颠倒过来,看下面的代码: import numpy as np arr = np.array([[1, 2, 3], [4, 5, 6 ...
- Numpy入门 - 数组切片操作
本节主要演示数组的切片操作,数组的切片操作有两种形式:更改原数组的切片操作和不更改原数组的切片操作. 一.更改原数组的切片操作 import numpy as np arr = np.array([1 ...
- Numpy入门 - 数组基本运算
本节主要讲解numpy数组的基本运算,包括两数组相加.相减.相乘和相除. 一.两数组相加add import numpy as np arr1 = np.array([[1, 2, 3], [4, 5 ...
- Numpy入门 - 数组排序
本节主要讲解numpy数组的排序方法sort的应用,包括按升序排列和按降序排列. 一.按升序排列 import numpy as np arr = np.array([[3, 1, 2], [6, 4 ...
- Numpy入门 - 数组聚合运算
本节主要讲解numpy的几个常用的聚合运算,包括求和sum.求平均mean和求方差var. 一.求和sum import numpy as np arr = np.array([[1, 2, 3], ...
- 面向矩阵的numpy入门笔记
我先声明我学numpy的目的:在python中使用矩阵(我需要在机器学习中使用矩阵),所以我的目的很明确,矩阵: 矩阵在numpy中叫ndarray(The N-dimensional array), ...
- NumPy入门
import numpy as np 数组与标量之间的运算作用于数组的每一个元素.
随机推荐
- Angular6在自定义指令中使用@HostBingDing() 和@HostListener()
emmm,,,最近在为项目的第二阶段铺路,偶然看到directive,想想看因为项目已经高度集成了第三方组件,所以对于自定义指令方面的经验自己实在知之甚少,后面经过阅读相关资料,总结一篇关于在自定义指 ...
- HDU3038【种类并查集】
题意: 给出m组区间[a,b],以及其区间的和,问有矛盾的有几组: 思路: 种类并查集. 主要是几个关系:同类元素的关系,父亲与儿子的关系,不同类元素的关系: 我们可以类似看作一个前缀和,sum[x] ...
- caller和callee的解析与使用-型参与实参的访问
caller:是一个函数引用(当前执行函数”被调用的地方”{即这个”被调用的地方”函数引用},如果这个”被调用的地方”是window,则返回[null]),是函数名的属性: var a = funct ...
- [Xcode 实际操作]八、网络与多线程-(16)使用网址会话对象URLSession下载图片并显示下载进度
目录:[Swift]Xcode实际操作 本文将演示如何通过网址会话对象URLSession显示下载图片的进度. 网址会话对象URLSession具有在后台上传和下载.暂停和恢复网络操作.丰富的代理模式 ...
- STP-5-STP配置及分析
拓扑: root id列出了根的网桥id为两部分,前边是优先级,后边跟着mac地址,cost 0 暗示sw1就是根: 下边的命令确认sw1就是vlan1的根: 下边,sw2配置了一个比sw1更低的优先 ...
- Web之localStorage
localStorage: 1.localStorage拓展了cookie的4K限制 2.localStorage会可以将第一次请求的数据直接存储到本地,这个相当于一个5M大小的针对于前端页面的数据库 ...
- C# 委托之把委托从委托链(多播委托)移除
运用“-”运算符将委托从委托链移除 class HelloWorld { //定义委托类型 delegate void DelegationChain(); static void Main(stri ...
- 【bzoj1731】Layout 排队布局
1731: [Usaco2005 dec]Layout 排队布局 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 868 Solved: 495[Subm ...
- python学习之列表元组,字典
list:元素性质可以不一致,元素还可以是list,可类似数组方法进行索引(也可以用负数索引,-1表示最后一个),可用.append('')进行动态增加,可用pop()删除最后一个或者pop(i)删除 ...
- POJ - 2186 Popular Cows tarjain模板题
http://poj.org/problem?id=2186 首先求出所有的强连通分量,分好块.然后对于每一个强连通分量,都标记下他们的出度.那么只有出度是0 的块才有可能是答案,为什么呢?因为既然你 ...