数据挖掘技术-掌握ufunc函数

掌握ufunc函数

ufunc函数是针对数组进行操作的函数,常用的ufunc函数运算有四则运算、比较运算和逻辑运算等。

数组的四则运算,如代码 45所示。

代码 45 数组的四则运算

In[16]:

x = np.array([1,2,3])

y = np.array([4,5,6])

print('数组相加结果为:',x + y)  #数组相加

Out[16]:

数组相加结果为: [5 7 9]

In[17]:

print('数组相减结果为:',x - y)  #数组相减

Out[17]:

数组相减结果为: [-3 -3 -3]

In[18]:

print('数组相乘结果为:',x * y)  #数组相乘

Out[18]:

数组相乘结果为: [ 4 10 18]

In[19]:

print('数组相除结果为:',x / y)  #数组相除

Out[19]:

数组相除结果为: [ 0.25  0.4   0.5 ]

In[20]:

print('数组幂运算结果为:',x ** y)  #数组幂运算

Out[20]:

数组幂运算结果为: [  1  32 729]

比较运算返回的结果是一个布尔数组,每个元素为每个数组对应元素的比较结果,如代码 46所示。

代码 46 数组的比较运算

In[21]:

x = np.array([1,3,5])

y = np.array([2,3,4])

print('数组比较结果为:',x < y)

Out[21]:

数组比较结果为: [ True False False]

In[22]:

print('数组比较结果为:',x > y)

Out[22]:

数组比较结果为: [False False  True]

In[23]:

print('数组比较结果为:',x == y)

Out[24]:

数组比较结果为: [False  True False]

In[24]:

print('数组比较结果为:',x >= y)

Out[24]:

数组比较结果为: [False  True  True]

In[25]:

print('数组比较结果为:',x <= y)

Out[25]:

数组比较结果为: [ True  True False]

In[26]:

print('数组比较结果为:',x != y)

Out[26]:

数组比较结果为: [ True False  True]

在NumPy逻辑运算中,np.any函数表示逻辑“or”,np.all函数表示逻辑“and”,如代码 47所示。

代码 47 数组的逻辑运算

In[27]:

print('数组逻辑运算结果为:',np.all(x == y))  # np.all()表示逻辑and

Out[27]:

数组逻辑运算结果为: False

In[28]:

print('数组逻辑运算结果为:',np.any(x == y))  # np.any()表示逻辑or

Out[28]:

数组逻辑运算结果为: True

      1. ufunc函数的广播机制

以一维数组和二维数组举例说明广播的运算机制。

一维数组的广播机制,如代码 48所示。

代码 48 一维数组的广播机制

In[29]:

arr1 = np.array([[0,0,0],[1,1,1],[2,2,2],[3,3,3]])

print('创建的数组1为:',arr1)

Out[29]:

创建的数组1为: [[0 0 0]

 [1 1 1]

 [2 2 2]

 [3 3 3]]

In[30]:

print('数组1的shape为:',arr1.shape)

Out[30]:

数组1的shape为: (4, 3)

In[31]:

arr2 = np.array([1,2,3])

print('创建的数组2为:',arr2)

Out[31]:

创建的数组2为: [1 2 3]

In[32]:

print('数组2的shape为:',arr2.shape)

Out[32]:

数组2的shape为: (3,)

In[33]:

print('数组相加结果为:',arr1 + arr2)

Out[33]:

数组相加结果为: [[1 2 3]

 [2 3 4]

 [3 4 5]

 [4 5 6]]

二维数组的广播机制,如代码 49所示。

代码 49 二维数组的广播机制

In[34]:

arr1 = np.array([[0,0,0],[1,1,1],[2,2,2],[3,3,3]])

print('创建的数组1为:',arr1)

Out[34]:

创建的数组1为: [[0 0 0]

 [1 1 1]

 [2 2 2]

 [3 3 3]]

In[35]:

print('数组1的shape为:',arr1.shape)

Out[35]:

数组1的shape为: (4, 3)

In[36]:

arr2 = np.array([1,2,3,4]).reshape((4,1))

print('创建的数组2为:',arr2)

Out[36]:

创建的数组2为: [[1]

 [2]

 [3]

 [4]]

In[37]:

print('数组2的shape为:',arr2.shape)

Out[37]:

数组2的shape为: (4, 1)

In[38]:

print('数组相加结果为:',arr1 + arr2)

Out[38]:

数组相加结果为: [[1 1 1]

 [3 3 3]

 [5 5 5]

 [7 7 7]]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知识世界

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值