前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >初探numpy——广播和数组操作函数

初探numpy——广播和数组操作函数

作者头像
LRainner
发布2020-07-15 15:39:58
6340
发布2020-07-15 15:39:58
举报
文章被收录于专栏:安全学习笔记安全学习笔记

numpy广播(Broadcast)

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

代码语言:javascript
复制
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)
代码语言:javascript
复制
[[ 2  6 10]
 [ 6 10 14]]

[[ 1  8 21]
 [ 8 25 48]]

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

代码语言:javascript
复制
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)
代码语言:javascript
复制
[[2 4 6]
 [5 7 9]]

[[ 1  4  9]
 [ 4 10 18]]

numpy数组操作函数

修改数组形状

numpy.reshape()

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

代码语言:javascript
复制
numpy.reshape(array , newshape , order = 'C')

参数

描述

array

要修改形状的数组

newshape

整数或整数数组,新的形状应该兼容原有形状

order

'C'——按行,'F'——按列,'A'——原顺序,'K'——元素咋内存中出现的顺序

代码语言:javascript
复制
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)
代码语言:javascript
复制
[ 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为数组元素迭代器

代码语言:javascript
复制
array=np.arange(9).reshape([3,3])
print(array,'\n')

# 按行遍历数组
for row in array:
    print(row)
    
# 使用数组元素迭代器
for element in array.flat:
    print(element)
代码语言:javascript
复制
[[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返回一个数组的视图,修改视图时会影响原始数组
代码语言:javascript
复制
numpy.ndarray.flatten(order = 'C')
代码语言:javascript
复制
numpy.ravel(order = 'C')

参数

描述

order

'C'——按行,'F'——按列,'A'——原顺序,'K'——元素咋内存中出现的顺序

代码语言:javascript
复制
array=np.arange(16).reshape([4,4])
print(array,'\n')

print(array.flatten(),'\n')
print(array.ravel())
代码语言:javascript
复制
[[ 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]
代码语言:javascript
复制
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')
代码语言:javascript
复制
[[ 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数组转置函数
代码语言:javascript
复制
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)
代码语言:javascript
复制
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用于交换数组两个轴的函数
代码语言:javascript
复制
numpy.swapaxes(arr , axis1, axis2)

参数

描述

arr

输入数组

axis1

对应数组第一个轴

axis2

对应数组第二个轴

代码语言:javascript
复制
array=np.arange(8).reshape(2,2,2)
print(array)

# 交换第零个轴和第二个轴
print(np.swapaxes(array,0,2))
代码语言:javascript
复制
[[[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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-07-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小白也编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • numpy广播(Broadcast)
  • numpy数组操作函数
    • 修改数组形状
      • numpy.reshape()
      • numpy.ndarray.flat
      • numpy.ndarray.flatten和numpy.ravel
    • 翻转数组
      • transpose和ndarray.T
      • numpy.swapaxes
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档