首页 > 其他分享 >科学计算库Numpy库(2.数组之间的运算)

科学计算库Numpy库(2.数组之间的运算)

时间:2024-06-23 19:29:16浏览次数:3  
标签:运算 科学计算 np 数组 print data1 Numpy data2

文章目录

  • 前言

    一、数组运算

    二、数组广播

    三.数组与标量间的运算

  • 总结


前言

Numpy数组不需要遍历循环,即可对每个元素执行批量的算术运算操作,这个过程叫做矢量化运算。不过。如果两个数组的大小(ndarray.shape)不同,则它们进行算术运算时会出现广播机制。除此之外,数组还支持使用运算符与标量进行运算,本文章将针对数组运算进行详细的介绍。


一、数组运算

在numpy数组中,大小相等的数组之间的任何算术运算都会应用到元素级,即只用于位置相同的元素之间,所得的运算结果组成一个新的数组,接下来通过一张示意图来描述什么时矢量运算

arr1
0123

                                                                              +

arr2
4567

                                                                               =

46810

数组arr1与arr2对齐后,会让相同位置的元素相加得到一个新的数组。其中得到的数组中的每个元素为操作数相加的结果,并且结果的位置跟操作数的位置是相同的,大小形同的数组之间的算术运算,示例代码如下。

import numpy as np
data1 = np.array([[1,2,3],[4,5,6],[7,8,9]])
data2 = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(data1+data2)
# 运行结果为:
"""[[ 2  4  6]
 [ 8 10 12]
 [14 16 18]]
"""
print(data1-data2)

# 运行结果为:
"""[[0 0 0]
 [0 0 0]
 [0 0 0]]
"""

print(data1*data2)
# 运行结果为:
"""[[ 1  4  9]
 [16 25 36]
 [49 64 81]]
"""

print(data1/data2)
# 运行结果为:
"""[[1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]]
"""

二、数组广播

数组在进行矢量运算时,要求数组的形状是相等的,当形状不相等的数组执行矢量运算的时候,就会出现广播机制,该机制会对数组进行扩展,使得数组的shape属性值一样,这样就可以进行矢量化运算了,下面来看一个例子: 

代码如下(示例):

import numpy as np
arr1 = np.array(([0],[1],[2],[3]))
print(arr1.shape)
# 运行结果为(4,1)

arr2 = np.array([1,2,3])
print(arr2.shape)
# 运行结果为(3,)
print(arr1+arr2)
# 运行结果为:
"""
[[1 2 3]
 [2 3 4]
 [3 4 5]
 [4 5 6]]
"""

上述代码中数组arr1的shape是(4,1),arr2的shape(3,),这两个数组是进行相加,按照广播机制会对数组arr1和arr2进行扩展,使得数组都变成(4,3)

arr1拓展后的结果为:

000
111
222
333

arr2扩展后的结果为: 

123
123
123
123

三.数组与标量间的运算

大小相等的数组之间的任何算术运算都会将运算运用到元素级,同样,数组与标量的算术运算也会将那个标量值传播传播到各个元素,当对数组进行相加,相减,乘以或者除以一个数字时这些称为标量运算 。标量运算会产生一个与数组具有相同数量的行和列的新矩阵,其原始矩阵的每个元素都被相加,相减,相乘或者相除。

数组与标量之间的代码,示例如下

import numpy as np
data1 = np.array([[1,2,3],[4,5,6]])
data2 = 10
print(data1+data2)
print(data1-data2)
print(data1*data2)
print(data1/data2)
# 对应的运算结果为
"""
[[11 12 13]
 [14 15 16]]


[[-9 -8 -7]
 [-6 -5 -4]]


[[10 20 30]
 [40 50 60]]


[[0.1 0.2 0.3]
 [0.4 0.5 0.6]]




"""

总结


以上就是今天要讲的内容,本文仅仅简单介绍了numpy中数组运算的使用,包括数组之间的运算,数组的广播机制,数组与标量之间的运算。

标签:运算,科学计算,np,数组,print,data1,Numpy,data2
From: https://blog.csdn.net/qzt27200502/article/details/139904174

相关文章

  • LeetCode 209.长度最小的子数组
    链接209.长度最小的子数组-力扣(LeetCode)题目给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其总和大于等于 target 的长度最小的 子数组[numsl,numsl+1,...,numsr-1,numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。示......
  • 12-数组
    数组的概述相同类型数据的有序集合按照一定的先后次序排序组合而成每个数组元素可以通过一个下标来访问它们数组一旦被创建,它的大小就不可改变数组中的元素可以是任何数据类型,包括基本类型和引用类型数组变量属于引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象......
  • NumPy数组的分割
    NumPy数组的分割方法说明split()分割数组hsplit()沿横轴分割数组vsplit()沿纵轴分割数组1.split()np.split(arr,整数或数组,axis=n)(1)整数importnumpyasnparr=np.arange(10)res=np.split(arr,5)print("arr:")print(arr)print("res:")p......
  • LeetCode 448. 找到所有数组中消失的数字(哈希表)
    448.找到所有数组中消失的数字思路:方法一,借助额外的0(n)空间sta进行哈希classSolution{public:vector<int>findDisappearedNumbers(vector<int>&nums){intn=nums.size();vector<int>sta(n,0);for(inti=0;i<n;i++){......
  • 数组元素的数量
    在数组初始化时,我们不希望将数组大小写死,后续可能会有修改,那么对于未指定大小的数组,如何计算其元素个数?思路:已知数组名代表整个数组的物理大小,数组内单个元素代表数组的一个单元物理大小,假设数组物理空间是100,单个元素物理空间是5,那么该数组一共有20个元素。array_element_numbe......
  • 力扣-1630. 等差子数组
    1.题目介绍题目地址(1630.等差子数组-力扣(LeetCode))https://leetcode.cn/problems/arithmetic-subarrays/题目描述如果一个数列由至少两个元素组成,且每两个连续元素之间的差值都相同,那么这个序列就是等差数列。更正式地,数列s是等差数列,只需要满足:对于每个有效的i,s[i......
  • 152. 乘积最大子数组
    152.乘积最大子数组题目链接:152.乘积最大子数组代码如下:classSolution{public:intmaxProduct(vector<int>&nums){intres=nums[0];vector<int>f(nums.size()+1,0),g(nums.size()+1,0);f[0]=nums[0],g[0]=nums[0];......
  • JSONObject 【解析JSON格式】使用Gson库解析包含数组的JSON
    本人详解作者:王文峰,参加过CSDN2020年度博客之星,《Java王大师王天师》公众号:JAVA开发王大师,专注于天道酬勤的Java开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯山峯转载说明:务必注明来源(注明:作者:王文峰哦)JSONObject【......
  • 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II
    977.有序数组的平方,209.长度最小的子数组,59.螺旋矩阵II977.有序数组的平方题目链接:977.有序数组的平方-力扣(LeetCode) 代码:classSolution{public:  vector<int>sortedSquares(vector<int>&nums){​    //intlength=end(nums)-begin(nums);......
  • 238. 除自身以外数组的乘积
    题目给你一个整数数组nums,返回数组answer,其中answer[i]等于nums中除nums[i]之外其余各元素的乘积。题目数据保证数组nums之中任意元素的全部前缀元素和后缀的乘积都在32位整数范围内。请不要使用除法,且在O(n)时间复杂度内完成此题。示例1:输入:nums=......