运算库之numpy(数组之间的运算)

1.数组之间的运算:
    1.数组和数的运算
        数组里面的每一个元素,都会进行该操作。比如 数组 * 数字 结果为数组中的每一个元素都会进行乘以这个数字。这里其实也是利用了ndarray计算的广播效应。
    2.数组和数组的运算
        1.维度相同的数组:
            对应元素之间进行相应的操作。数组A * 数组B 结果为数组中每一个相应的元素都会进行对应乘法的计算。
        2.维度不同的数组:
            采用广播效应。
2.数组运算的时候的广播效应:
    当满足下方两个条件中的一个时,即可实现广播
        1.对应维度的数字相同时候
        2.对应维度不同时,其数字只能为1
        例子如下。

data1:(2, 2, 3)

data2:(1, 3)

data3:(2, 1)

data4:(1, 2, 3)

根据以上两个实现广播的原则,data2、data3、data4都和data1相互计算。

数组之间的运算:

代码:

import numpy as np

# 数据获取
np.random.seed(22)
data = np.random.uniform(-1, 2, size=20).reshape(4, 5)
data1 = np.random.normal(0, 2, size=20).reshape(4, 5)
data3 = np.random.random(size=4).reshape(4, 1)
print('data:\n', data)
print('data1:\n', data1)

# 1.数组和数的运算
print('数组和数的运算:\n', data + 1)

# 2.相同维度的数组运算
print('相同维度的数组运算:\n', data1 + data)

# 3.不相同的数组运算
print('不相同的数组运算:\n', data + data3)

输出:

data:
 [[-0.37461839  0.44504319  0.26161411  1.577546   -0.48651534]
 [ 0.01659188 -0.1884015   1.07312405 -0.33878645  1.43585276]
 [-0.96841938  0.68361109  1.44117856  1.23530089 -0.43266593]
 [-0.9815774   1.31613161  1.8734965   1.10581365 -0.1072652 ]]
data1:
 [[ 1.49550053  2.12935318  3.04025918 -2.97720587  3.71997978]
 [-3.19722605 -1.29214723  0.67465     2.09345745  1.25828668]
 [ 0.72611819  1.11149939 -2.17709906  0.04738954  4.99835328]
 [-4.98006079 -0.46972477 -0.19512692 -1.77305868 -0.27342648]]
数组和数的运算:
 [[0.62538161 1.44504319 1.26161411 2.577546   0.51348466]
 [1.01659188 0.8115985  2.07312405 0.66121355 2.43585276]
 [0.03158062 1.68361109 2.44117856 2.23530089 0.56733407]
 [0.0184226  2.31613161 2.8734965  2.10581365 0.8927348 ]]
相同维度的数组运算:
 [[ 1.12088214  2.57439636  3.30187328 -1.39965988  3.23346444]
 [-3.18063417 -1.48054873  1.74777405  1.754671    2.69413944]
 [-0.24230119  1.79511048 -0.7359205   1.28269043  4.56568735]
 [-5.96163819  0.84640684  1.67836959 -0.66724503 -0.38069167]]
不相同的数组运算:
 [[-0.32940828  0.4902533   0.30682422  1.62275611 -0.44130523]
 [ 0.7014206   0.49642722  1.75795277  0.34604227  2.12068148]
 [-0.11922863  1.53280184  2.29036931  2.08449163  0.41652481]
 [-0.85637022  1.4413388   1.99870369  1.23102084  0.01794198]]

 广播效应:

代码:

import numpy as np


# 数据获取
np.random.seed(22)
data1 = np.random.random(size=12).reshape((2, 2, 3))
data2 = np.random.random(size=3).reshape((1, 3))
data3 = np.random.random(size=2).reshape((2, 1))
data4 = np.random.random(size=6).reshape((1, 2, 3))
data5 = np.random.random()
print('data1:\n', data1)
print('data2:\n', data2)
print('data3:\n', data3)
print('data4:\n', data4)
print('data5:\n', data5)

# shape为(2, 2, 3)和 (1, 3)
print('data1+data2:\n', data1 + data2)

# shape为(2, 2, 3)和 (2, 1)
print('data1+data3:\n', data1 + data3)

# shape为(2, 2, 3)和 (1, 2, 3)
print('data1+data4:\n', data1 + data4)

# shape为(2, 2, 3)和 (1, )
print('data1+data5:\n', data1 + data5)

 输出:

data1:
 [[[0.20846054 0.48168106 0.42053804]
  [0.859182   0.17116155 0.33886396]]

 [[0.27053283 0.69104135 0.22040452]
  [0.81195092 0.01052687 0.5612037 ]]]
data2:
 [[0.81372619 0.7451003  0.18911136]]
data3:
 [[0.00614087]
 [0.77204387]]
data4:
 [[[0.95783217 0.70193788 0.29757827]
  [0.76799274 0.68821832 0.38718348]]]
data5:
 0.6152058250930562
data1+data2:
 [[[1.02218672 1.22678136 0.60964939]
  [1.67290819 0.91626185 0.52797532]]

 [[1.08425902 1.43614165 0.40951587]
  [1.62567711 0.75562717 0.75031505]]]
data1+data3:
 [[[0.2146014  0.48782193 0.4266789 ]
  [1.63122587 0.94320543 1.11090783]]

 [[0.2766737  0.69718222 0.22654538]
  [1.58399479 0.78257075 1.33324757]]]
data1+data4:
 [[[1.16629271 1.18361895 0.7181163 ]
  [1.62717474 0.85937988 0.72604744]]

 [[1.228365   1.39297923 0.51798278]
  [1.57994366 0.6987452  0.94838718]]]
data1+data5:
 [[[0.82366636 1.09688689 1.03574386]
  [1.47438782 0.78636738 0.95406979]]

 [[0.88573866 1.30624718 0.83561034]
  [1.42715675 0.6257327  1.17640952]]]

学习地址:

 黑马程序员Python教程,4天快速入门Python数据挖掘,系统精讲+实战案例_哔哩哔哩_bilibili

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值