初探numpy——广播和数组操作函数
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——广播和数组操作函数的更多相关文章
- JavaScript中常见的数组操作函数及用法
JavaScript中常见的数组操作函数及用法 昨天写了个帖子,汇总了下常见的JavaScript中的字符串操作函数及用法.今天正好有时间,也去把JavaScript中常见的数组操作函数及用法总结一下 ...
- JavaScript 数组操作函数--转载+格式整理
JavaScript 数组操作函数(部分)--转载+格式整理 今天看了一篇文章,主要讲的对常用的Js操作函数:push,pop,join,shift,unshift,slice,splice,conc ...
- php中数组操作函数
一.数组操作的基本函数数组的键名和值array_values($arr); 获得数组的值array_keys($arr); 获得数组的键名array_flip($arr); 数组中的值与键名互换 ...
- 量化投资_Multicharts数组操作函数_append()追加函数(自定义)
1. Multicharts中关于数组的操作比较麻烦,而且当中所谓的动态数组的定义并不是像其他语言那种的概念.因此要对数组进行元素“”追加“”的话,需要重新更改数组的索引,然后再最后一个位置添加val ...
- js 数组操作函数有:push,pop,join,shift,unshift,slice,splice,concat
(1)push 和 pop 这两个函数都是对数组从尾部进行压入或弹出操作.push(arg1,arg2,...)可以每次压入一个或多个元素,并返回更新后的数组长度.注意如果参数也是数组的话,则是将全部 ...
- 【220】◀▶ IDL 数组操作函数说明
参考:Array Creation Routines —— 创建数组函数参考:Array Manipulation Routines —— 操作数组函数 01 MAX 最大值. 02 MIN ...
- 字符串、数组操作函数 Copy Concat Delete Insert High MidStr Pos SetLength StrPCopy TrimLeft
对字符串及数组的操作,是每个程序员必须要掌握的.熟练的使用这些函数,在编程时能更加得心应手. 1.Copy 功能说明:该函数用于从字符串中复制指定范围中的字符.该函数有3个参数.第一个参数是数据源(即 ...
- 【五】PHP数组操作函数
1.输出数组的结构:bool print_r(数组); $arr=array('jack','mike','tom'); print_r($arr);//Array ( [0] => jack ...
- Javascript数组操作函数总结
(1) shift 删除原数组第一项,并返回删除元素的值:如果数组为空则返回undefined var a = [1,2,3,4,5]; var b = a.shift(); //a:[2,3,4, ...
随机推荐
- Java实现 LeetCode 753 破解保险箱(递归)
753. 破解保险箱 有一个需要密码才能打开的保险箱.密码是 n 位数, 密码的每一位是 k 位序列 0, 1, -, k-1 中的一个 . 你可以随意输入密码,保险箱会自动记住最后 n 位输入,如果 ...
- Java实现 LeetCode 713 乘积小于K的子数组(子集数量+双指针)
713. 乘积小于K的子数组 给定一个正整数数组 nums. 找出该数组内乘积小于 k 的连续的子数组的个数. 示例 1: 输入: nums = [10,5,2,6], k = 100 输出: 8 解 ...
- C# Winform 学习(四)
目标 1.文本类 2.选择类 3.导航类 一.文本类控件 1.文本标签Label 1)命名:lbl开始 2)常用属性: Text.Visible 2.文本框TextBox 1)命名:txt开始 2)常 ...
- Java实现 LeetCode 234 回文链表
234. 回文链表 请判断一个链表是否为回文链表. 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true 进阶: 你能否 ...
- Java 是如何实现跨平台的?
Java 是如何实现跨平台的? 注意:跨平台的是 Java 程序,而不是 JVM.JVM 是用 C/C++ 开发的,是编译后的机器码,不能跨平台,不同平台下需要安装不同版本的 JVM 答:我们编写的 ...
- java实现第四届蓝桥杯振兴中华
振兴中华 题目描述 小明参加了学校的趣味运动会,其中的一个项目是:跳格子. 地上画着一些格子,每个格子里写一个字,如下所示:(也可参见p1.jpg) 从我做起振 我做起振兴 做起振兴中 起振兴中华 比 ...
- PAT 跟奥巴马一起编程
美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统.2014 年底,为庆祝“计算机科学教育周”正式启动,奥巴马编写了很简单的计算机代码:在屏幕上画一个 ...
- Spring 源码学习 - 单例bean的实例化过程
本文作者:geek,一个聪明好学的同事 1. 简介 开发中我们常用@Commpont,@Service,@Resource等注解或者配置xml去声明一个类,使其成为spring容器中的bean,以下我 ...
- iOS-Swift版本自定义CStextView的实现
CSTextView继承自UITextView,并为其增加了placeHolder属性,支持代码和SB方式创建:demo实现了CSTextView的自动排版 效果图 CSTextView地址: htt ...
- SSM框架处理跨域问题
什么是跨域 跨域是指从一个域名的网页去请求另一个域名的资源.比如从www.baidu.com 页面去请求 www.google.com 的资源.跨域的严格一点的定义是:只要 协议,域名,端口有任何一个 ...