初探numpy——广播和数组操作函数
2024-09-01 15:20:46
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 |
最新文章
- T-SQL:毕业生出门需知系列(五)
- sql查询工程结算分包款转出
- shell 中 &;&;和||的方法
- Redis Sentinel哨兵集群
- 非官方的iOS设计指南
- OpenShare新功能@2014年11月 [2014-11-30]
- hdu3231 (三重拓扑排序) 2009 Asia Wuhan Regional Contest Hosted by Wuhan University
- Android -- 双击退出
- start-tomcat7.launch
- putty登录远程数据库Oracle
- [置顶] 实习总结3-job hunting(西安工作)
- c语言,结构体
- 用vuejs仿网易云音乐(实现听歌以及搜索功能)
- LeetCode 542. 01 Matrix
- Web前端有价值的博客文章汇总
- cannot update the cursor rep,since it is read-only
- blfs(systemd版本)学习笔记-配置远程访问和管理lfs系统
- darknet优化经验-AlexeyAB大神经验
- 【转】.htaccess详解及.htaccess参数说明
- 阅读Cortex-A53 Technical Reference Manual笔记
热门文章
- ASP.NET的Web网页如何进行分页操作(Demo举例)
- Java实现 LeetCode 706 设计哈希映射(数组+链表)
- Java实现 LeetCode 457 环形数组循环
- Java实现 LeetCode 315 计算右侧小于当前元素的个数
- Java实现 LeetCode 279 完全平方数
- Java中System的详细用法
- Java实现LeetCode_0027_RemoveElement
- jQuery实现瀑布流布局
- @bzoj - 3724@ PA2014Final Krolestwo
- 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(11.0)- FlexSPI NOR启动时间(RT1170)