import numpy as npa = np.array([1, 2, 3])          #创建一个1x3的数组
print(type(a))                   #结果应该是:<type 'numpy.ndarray'>
print(a.shape)                   #(3,)
print(a[0], a[1], a[2])          #1,2,3
a[0]=5
print(a)                         #[1,2,3]#####################其他一些创建并初始化数组的方法######################
a = np.zeros((2,2)
print(a)                         #输出结果为:[[0.,0.],#             [0.,0.]]b = np.ones((1,2))
print(b)                        #输出结果为:[[1.,1.],#             [1.,1.]]c = np.full((2,2), 7)
print(c)                         #输出结果为:[[7.,7.],#             [7.,7.]]d = np.eye(2)
print(d)                         #输出结果为:[[1.,0.],#             [0.,1.]]e = np.random.random((2,2))
print(e)                         #一输出结果:[[ 0.24675928,0.08179221]#             [ 0.86916875,0.67120492]]#####################下标操作的一些常用的方法############################
a = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]]) #创建数组:## [[ 1  2  3  4]#   [ 5  6  7  8]#   [ 9 10 11 12]]#取a的子数组,前2行的1,2列(从0开始)
b = a[:2, 1:3]                                     #结果为:#[[2,3]# [3,7]]#子数组是原数组中的一部分,改变子数组值会相应更改原数组的值
b[0,0]=0.
print(a)                                           #输出为:#  [[ 1  0  3  4]#   [ 5  6  7  8]#   [ 9 10 11 12]]#取整行的操作,注意区别
row_r1 = a[1, :]
row_r2 = a[1:2, :]
print(row_r1, row_r1.shape)                        #[5,6,7,8] (4,)
print(row_r2, row_r2.shape)                        #[[5,6,7,8]] (1,4)#整数索引
a=np.array([[1,2],[3,4],[5,6]])
print(a[[0,1,2],[0,1,0]])                          #[1,4,5]前面是行后面是列
同
print(np.array[a[0,0],a[1,1],a[2,0]])              #[1,4,5]print(a[[0,0],[1,1]])                              #[2,2]
同
print(np.array[a[0,1],a[0,1]])                     #[2,2]#整数索引使用,选择修改矩阵中某些行中的某些值
a=np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
print(a)                                           #[[1,2,3],# [4,5,6],# [7,8,9],# [10,11,12]]
b = np.array([0, 2, 0, 1])                         #创建一个下标数组
print(a[np.arrange(4),b])                          #使用b中元素做下标取a中每行对应的元素#[1,6,7,11]
a[np.arrange(4),b]+10                              #改变对应的值
print(a)                                           #[[11,2,3],# [4,5,16],# [17,8,9],# [10,21,12]]#布尔索引,从数组中取出一些满足一定条件的元素a = np.array([[1,2], [3, 4], [5, 6]])              #[[1,2],[3,4],[5,6]]bool_idx=(a>2)                                     #找出a中大于2的元素,#返回值为形如a的矩阵,值为False或True
print(bool_idx)                                    #[[False,False],[True,True],[True,True]]#使用布尔数组做下标输出a中的值
print(a[bool_idx])                                 #[3,4,5,6]###########################Numpy数组中的数据类型##############################
#缺省情况下,numpy 自动选择
x = np.array([1, 2])
print(x.dtype)                                     #int64x = np.array([1.0, 2.0])
print(x.dtype)])                                   #float64#强制类型转换
x = np.array([1, 2], dtype=np.float64)
print(x.dtype)                                     #float64#################################数组数学运算####################################按元素操作的基本数学运算,可以使用运算符,也可以使用相关函数
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))                                #[[6.0,8.0],[10.0,12.0]]#减法
print(x - y)
print(np.subtract(x, y))                           #[[-4.0,-4.0],[-4.0,-4.0]]#按位除
print(x / y)
print(np.divide(x, y))                             #[[0.2,0.33333333],[0.42851743,0.5]]#按位乘
print(x * y)
print(np.multiply(x, y))                           #[[5.0,12.0],[21.0,32.0]]#按位取平方根
print(np.sqrt(x))                                  #[[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))                                #219#矩阵向量相乘
print(x.dot(v))
print(np.dot(x, v))                                #[29,67]#矩阵相乘
print(x.dot(y))
print(np.dot(x, y))                                #[[19,22],[43,50]]###数组中最有用的函数之一sum
x = np.array([[1,2],[3,4]])print(np.sum(x))                                   #10,计算数组x中所有元素的和
print(np.sum(x, axis=0))                           #[4 6],按列求和
print(np.sum(x, axis=1))                           #[3 7],按行求和###数组reshape或元素操作
#转置
x = np.array([[1,2], [3,4]])
print(x)                                           #[[1,2],[3,4]]
print(x.T)                                         #[[1,3],[2,4]]#对向量转置不起作用
v = np.array([1,2,3])
print(v)                                           #[1,2,3]
print(v.T)                                         #[1,2,3]########################## Broadcasting #####################################
#Broadcast是numpy中不同shape的数组进行数学运算的有效机制
#例:假如对一个矩阵的每一行同一个向量相加
#1.常规做法
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)                               #创建一个形如x的空数组for i in range(4):y[i, :] = x[i, :] + vprint(y)                                          #[[2,2,4],# [5,5,7],# [8,8,10],# [11,11,13]]#but,若x很大,显示的循环在py中很费时#2.使用v生成一个与x shape相同的矩阵
x = np.array([[1,2,3], [4,5,6], [7,8,9], [10, 11, 12]])
v = np.array([1, 0, 1])
vv = np.tile(v, (4, 1))                           #在每层上堆积v,(4,3)y = x + vv
print(y)                                          #[[2,2,4],# [5,5,7],# [8,8,10],# [11,11,13]]
#3使用broadcast
x = np.array([[1,2,3], [4,5,6], [7,8,9], [10, 11, 12]])
v = np.array([1, 0, 1])
y = x + v                                         #不同shape的数组相加
print(y)                                          #[[2,2,4],# [5,5,7],# [8,8,10],# [11,11,13]]
  • numpy.flatnonzero(a)
    返回将aflatten之后的一维数组中非零元素的下标(indices)
>>>a=np.array([[1,2],[0,-1]])
>>>b=np.flatnonzero(a)
>>>b
array([0,1,3])
  • numpy.vstack(a,b),沿垂直方向合并数组(行方向),a,b除第一维外,其他维数要相同
>>> a = np.array([1, 2, 3])
>>> b = np.array([2, 3, 4])
>>> np.vstack((a,b))
array([[1, 2, 3],[2, 3, 4]])
>>> a = np.array([[1], [2], [3]])
>>> b = np.array([[2], [3], [4]])
>>> np.vstack((a,b))
# a.shape为3x1
array([[1],[2],[3],[2],[3],[4]])
  • numpy.stack(arr,axis=1),沿当前轴方向合并数组
>>> arrays = [np.random.randn(1, 2) for _ in range(3)]
>>> arrays[array([[0.66415129, 1.17639802]]),array([[-0.20116847, -0.07704193]]),array([[0.82340426, 0.56482453]])]>>> np.stack(arrays,axis=-1)array([[[ 0.66415129, -0.20116847,  0.82340426],[ 1.17639802, -0.07704193,  0.56482453]]])In [16]: np.stack(arrays,axis=0)
Out[16]:
array([[[ 0.66415129,  1.17639802]],[[-0.20116847, -0.07704193]],[[ 0.82340426,  0.56482453]]])
  • reference

[1]https://docs.scipy.org/doc/numpy/user/basics.creation.html#arrays-creation

[2]https://docs.scipy.org/doc/numpy/reference/arrays.indexing.html

[3]https://docs.scipy.org/doc/numpy/reference/arrays.dtypes.html

[4]https://docs.scipy.org/doc/numpy/reference/routines.math.html

[5]https://docs.scipy.org/doc/numpy/reference/ufuncs.html#available-ufuncs

[6]http://scipy.github.io/old-wiki/pages/EricsBroadcastingDoc

[7]http://cs231n.github.io/python-numpy-tutorial/#numpy-datatypes

CS231n-Numpy入门相关推荐

  1. numpy 数组抽取_清晰易懂的Numpy入门教程

    原标题:清晰易懂的Numpy入门教程 翻译 | 石头 来源 | Machine Learning Plus Numpy是python语言中最基础和最强大的科学计算和数据处理的工具包,如数据分析工具pa ...

  2. python numpy教程_Python中的Numpy入门教程

    这篇文章主要介绍了 Python 中的 Numpy 入门教程,着重讲解了矩阵中的数组操作 , 需要的 朋友可以参考下 1 . Numpy 是什么 很简单, Numpy 是 Python 的一个科学计算 ...

  3. Numpy入门[9]——数组与字符串的转换

    Numpy入门[9]--数组与字符串的转换 参考: https://ailearning.apachecn.org/ 使用Jupyter进行练习 import numpy as np tobytes方 ...

  4. numpy入门详细代码

    numpy入门 生成小的随机数组 属性 生成ndarray 维度 类型转换 数组算术 基础索引和切片 copy使用 数组切片索引 数组转置 面向数组编程 条件逻辑转为数组操作 随机漫步示例 numpy ...

  5. [入门教程](python numpy入门)

    [入门教程](python numpy入门) NumPy NumPy是一个开源的Python科学计算基础库,包含 •一个强大的N维数组对象ndarray •广播功能函数 •整合C/C++/Fortra ...

  6. 【Python语言基础】——Python NumPy 入门

    Python语言基础--Python NumPy 入门 文章目录 Python语言基础--Python NumPy 入门 一.Python NumPy 入门 一.Python NumPy 入门 安装 ...

  7. Numpy入门(九):np.corrcoef()用法

    点击跳转 <Numpy入门系列目录> numpy.corrcoef(x, y=无, rowvar = True, 偏差=<无值>, ddof=<无值>) x: ar ...

  8. python科学计算2 数据组织形式与numpy入门

    文章目录 1 数据组织 1.1 单个数据 1.2 数据组织 1.3 数据组织的形式 1.3.1一维数据 1.3.2 二维数据 1.3.3 多维数据 1.3.4 高维数据 1.4普通数据组织的缺点 2 ...

  9. Numpy入门[16]——choose函数实现条件筛选

    Numpy入门[16]--choose函数实现条件筛选 参考: https://ailearning.apachecn.org/ numpy高级函数操作之--select.choose 使用Jupyt ...

  10. numpy入门详细教程(一)

    本讲主要介绍对numpy库和numpy库的N维数组对象:ndarray的基本了解.更多内容请看numpy入门详细教程(二) numpy: NumPy是一个开源的Python科学计算基础库,包含: • ...

最新文章

  1. 深入学习Lock锁(2)——LockSupport工具类
  2. 在C#中使用SqlDbType.Xml类型参数
  3. 组播路由协议基础——组播分发树
  4. bundle 的生成和使用
  5. tps 数据库写并发衡量_MPP数据库简介
  6. C++最简单的方式实现split分割函数
  7. iptables复习记忆
  8. Visaul Studio 常用快捷键的动画演示
  9. 素数环-dfs回溯+二维数组记录(c++实现)
  10. 牛客题霸 [ 缺失数字] C++题解/答案
  11. 如何将SQL GROUP BY和聚合转换为Java 8
  12. android sqlite存储数据,Android之SQLite数据存储
  13. 布隆过滤器速度_高并发系统一定要考虑的 Bloom Filter 布隆过滤器
  14. Asp.net(C#)利用File Field多文件上传
  15. 无限极分类php简单,创建无限极分类树型结构的简单方法
  16. Python:Django 项目中可用的各种装备和辅助
  17. 使用poi导出excel,及合并单元格边框显示问题
  18. 计算机图形学-油画家算法
  19. oracle sys.dbms job,DBMS_JOB,dbms_ijob用法
  20. Comparable和Comparator接口

热门文章

  1. bzoj 2435: [Noi2011]道路修建(DFS)
  2. bzoj 1706: [usaco2007 Nov]relays 奶牛接力跑(倍增floyd)
  3. 安卓应用间的数据共享:ContentProvider、ContentResolver全解
  4. 支持kubernetes原生Spark 与其他应用的结合(mysql,postgresql,oracle,hdfs,hbase)
  5. python机器学习库sklearn——支持向量机svm
  6. python深度学习库tensorflow——实现FC卷积神经网络识别mnist手写体
  7. 2021.01.04
  8. R语言中%in%的作用
  9. 记录‘launch_simulation‘failed due to earlier errors的一个解决方法
  10. 不显示负频率的部分,坐标轴转换为频率,幅值量纲还原改善频谱图以及功率谱和对数功率谱