numpy广播(Broadcast)

若数组a,b形状相同,即a.shape==b.shape,那么a+b,a*b的结果就是对应数位的运算

import numpy as np

a=np.array([[1,2,3],[4,5,6]])
b=np.array([[1,4,7],[2,5,8]]) print(a+b,'\n')
print(a*b)
[[ 2  6 10]
[ 6 10 14]] [[ 1 8 21]
[ 8 25 48]]

若两个数组形状不同,且有一个数组维度为1,则会触发广播机制

a=np.array([[1,2,3],[4,5,6]])
b=np.array([1,2,3]) # 等同于np.array([[1,2,3],[4,5,6]])与np.array([1,2,3],[1,2,3])运算
print(a+b,'\n')
print(a*b)
[[2 4 6]
[5 7 9]] [[ 1 4 9]
[ 4 10 18]]

numpy数组操作函数

修改数组形状

numpy.reshape()

不改变数据的情况下修改形状

numpy.reshape(array , newshape , order = 'C')
参数 描述
array 要修改形状的数组
newshape 整数或整数数组,新的形状应该兼容原有形状
order 'C'——按行,'F'——按列,'A'——原顺序,'K'——元素咋内存中出现的顺序
import numpy as np

a_array=np.arange(16)
print(a_array,'\n') b_array=np.reshape(a_array,[4,4])
print(b_array,'\n') # 也可以打点调用
c_array=a_array.reshape([2,8])
print(c_array)
[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15] 

[[ 0  1  2  3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]] [[ 0 1 2 3 4 5 6 7]
[ 8 9 10 11 12 13 14 15]]

numpy.ndarray.flat

numpy.ndarray.flat为数组元素迭代器

array=np.arange(9).reshape([3,3])
print(array,'\n') # 按行遍历数组
for row in array:
print(row) # 使用数组元素迭代器
for element in array.flat:
print(element)
[[0 1 2]
[3 4 5]
[6 7 8]] [0 1 2]
[3 4 5]
[6 7 8]
0
1
2
3
4
5
6
7
8

numpy.ndarray.flatten和numpy.ravel

  • numpy扁平化函数
  • numpy.ndarray.flatten返回一份数组拷贝,对拷贝内容的修改不影响原始数值;
  • numpy.ravel返回一个数组的视图,修改视图时会影响原始数组
numpy.ndarray.flatten(order = 'C')
numpy.ravel(order = 'C')
参数 描述
order 'C'——按行,'F'——按列,'A'——原顺序,'K'——元素咋内存中出现的顺序
array=np.arange(16).reshape([4,4])
print(array,'\n') print(array.flatten(),'\n')
print(array.ravel())
[[ 0  1  2  3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]] [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15] [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]
a_array=np.arange(16).reshape([4,4])
print(a_array,'\n') #创建和a_array同样的数组b_array
b_array=a_array.copy() c_array=a_array.ravel()
d_array=array.flatten() print('c_array:')
print(c_array)
print('d_array:')
print(d_array,'\n') c_array[1]=100
d_array[1]=100 print('a_array:')
print(a_array)
print('b_array:')
print(b_array,'\n')
[[ 0  1  2  3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]] c_array:
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]
d_array:
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15] a_array:
[[ 0 100 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[ 12 13 14 15]]
b_array:
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]]

翻转数组

transpose和ndarray.T

  • numpy数组转置函数
a_array=np.arange(16).reshape([4,4])
print('a_array:\n',a_array) print('使用transpose后:')
print(np.transpose(a_array))
print('使用.T转置后:')
print(a_array.T)
a_array:
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]]
使用transpose后:
[[ 0 4 8 12]
[ 1 5 9 13]
[ 2 6 10 14]
[ 3 7 11 15]]
使用.T转置后:
[[ 0 4 8 12]
[ 1 5 9 13]
[ 2 6 10 14]
[ 3 7 11 15]]

numpy.swapaxes

  • numpy用于交换数组两个轴的函数
numpy.swapaxes(arr , axis1, axis2)
参数 描述
arr 输入数组
axis1 对应数组第一个轴
axis2 对应数组第二个轴
array=np.arange(8).reshape(2,2,2)
print(array) # 交换第零个轴和第二个轴
print(np.swapaxes(array,0,2))
[[[0 1]
[2 3]] [[4 5]
[6 7]]]
[[[0 4]
[2 6]] [[1 5]
[3 7]]]
(0)000->(0)000 (1)001->(4)100
(2)010->(2)010 (3)011->(6)110
(4)100->(1)001 (5)101->(5)101
(6)110->(3)011 (7)111->(7)111

初探numpy——广播和数组操作函数的更多相关文章

  1. JavaScript中常见的数组操作函数及用法

    JavaScript中常见的数组操作函数及用法 昨天写了个帖子,汇总了下常见的JavaScript中的字符串操作函数及用法.今天正好有时间,也去把JavaScript中常见的数组操作函数及用法总结一下 ...

  2. JavaScript 数组操作函数--转载+格式整理

    JavaScript 数组操作函数(部分)--转载+格式整理 今天看了一篇文章,主要讲的对常用的Js操作函数:push,pop,join,shift,unshift,slice,splice,conc ...

  3. php中数组操作函数

    一.数组操作的基本函数数组的键名和值array_values($arr);  获得数组的值array_keys($arr);  获得数组的键名array_flip($arr);  数组中的值与键名互换 ...

  4. 量化投资_Multicharts数组操作函数_append()追加函数(自定义)

    1. Multicharts中关于数组的操作比较麻烦,而且当中所谓的动态数组的定义并不是像其他语言那种的概念.因此要对数组进行元素“”追加“”的话,需要重新更改数组的索引,然后再最后一个位置添加val ...

  5. js 数组操作函数有:push,pop,join,shift,unshift,slice,splice,concat

    (1)push 和 pop 这两个函数都是对数组从尾部进行压入或弹出操作.push(arg1,arg2,...)可以每次压入一个或多个元素,并返回更新后的数组长度.注意如果参数也是数组的话,则是将全部 ...

  6. 【220】◀▶ IDL 数组操作函数说明

    参考:Array Creation Routines —— 创建数组函数参考:Array Manipulation Routines —— 操作数组函数 01   MAX 最大值. 02   MIN ...

  7. 字符串、数组操作函数 Copy Concat Delete Insert High MidStr Pos SetLength StrPCopy TrimLeft

    对字符串及数组的操作,是每个程序员必须要掌握的.熟练的使用这些函数,在编程时能更加得心应手. 1.Copy 功能说明:该函数用于从字符串中复制指定范围中的字符.该函数有3个参数.第一个参数是数据源(即 ...

  8. 【五】PHP数组操作函数

    1.输出数组的结构:bool print_r(数组); $arr=array('jack','mike','tom'); print_r($arr);//Array ( [0] => jack ...

  9. Javascript数组操作函数总结

    (1) shift  删除原数组第一项,并返回删除元素的值:如果数组为空则返回undefined var a = [1,2,3,4,5]; var b = a.shift(); //a:[2,3,4, ...

随机推荐

  1. Java实现 LeetCode 592 分数加减运算(纯体力活)

    592. 分数加减运算 给定一个表示分数加减运算表达式的字符串,你需要返回一个字符串形式的计算结果. 这个结果应该是不可约分的分数,即最简分数. 如果最终结果是一个整数,例如 2,你需要将它转换成分数 ...

  2. Java实现 LeetCode 420 强密码检验器

    420. 强密码检验器 一个强密码应满足以下所有条件: 由至少6个,至多20个字符组成. 至少包含一个小写字母,一个大写字母,和一个数字. 同一字符不能连续出现三次 (比如 "-aaa-&q ...

  3. Java实现 LeetCode 71 简化路径

    71. 简化路径 以 Unix 风格给出一个文件的绝对路径,你需要简化它.或者换句话说,将其转换为规范路径. 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身:此外,两个点 (-) 表示将 ...

  4. Python 网络爬虫基本概念篇

    爬虫的概念 网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.这是百度百科对爬虫的定义,其实,说简单点,爬虫 ...

  5. DMR windows 软件x64

    解压缩以后,默认使用串口4的USB热点板,用notepad2软件修改MMDVM.ini的呼号,ID,频率,串口号保存在打开DMR.bat即可,晶体有偏移的运行DMR500.bat https://sh ...

  6. 官宣!ASF官方正式宣布Apache Hudi成为顶级项目

    马萨诸塞州韦克菲尔德(Wakefield,MA)- 2020年6月 - Apache软件基金会(ASF).350多个开源项目和全职开发人员.管理人员和孵化器宣布:Apache Hudi正式成为Apac ...

  7. FPGA之SPI SD卡读操作

    这几天在FPGA调试与SD通信,读SD卡里的图片,之前接触32时没有去研究过SD卡,不太熟悉操作流程,在网上找了很多资料,也看了几个32开发板的资料,但大多数都讲得不是特别清楚,只能瞎操作了一番,在别 ...

  8. Grafana6.4.4 + zabbix 4.2

    环境简介 OS:Centos 7.4 zabbix:4.2.6 Grafana:6.4.4 一.yum 直接安装的方式 官方推荐有几种安装方式我采用yum 直接安装的方式 官方doc: https:/ ...

  9. Python简单http服务实现

    1.代码实现 # -*- coding: utf-8 -*-"""Created on Tue Jun 11 18:12:01 2019 @author: wangymd ...

  10. Java 多线程基础(三) start() 和 run()

    Java 多线程基础(三) start() 和 run() 通过之前的学习可以看到,创建多线程过程中,最常用的便是 Thread 类中的 start() 方法和线程类的 run() 方法.两个方法都包 ...