Python numpy,数组与数组的运算,sum数组元素求和,矩阵的乘法

numpy中两个多维数组之间可以进行运算的前提是:

1、shape为(4, 3, 2)可以与shape为(3, 2)的数组进行运算。(维度从后面开始算,可以成功匹配)

2、shape为(4, 3, 2)也可以与shape为(4, 3)的数组进行运算。(维度从前面开始算,可以成功匹配)

意义(好处):举个例子:每列的数据减去列的平均值的结果

 

demo.py(numpy,数组的运算):

# coding=utf-8
import numpy as np


t1 = np.array([[0, 1, 2], [3, 4, 5]])  # 二维数组
print(t1)
'''
[[0 1 2]
 [3 4 5]]
'''

# 多维数组与单个数字 + - * /,就是数组中的所有元素依次与该数字进行+ - * /。
t2 = t1 + 5
print(t2)
'''
[[ 5  6  7]
 [ 8  9 10]]
'''
# numpy中除以0并不会报错,只是警告。  0/0返回nan(不是一个数字); 1/0返回inf(正无穷),-1/0返回-inf(负无穷)


# 同形状的两个数组相 + - * /,就是两个数组中对应位置元素进行+ - * /。
t3 = np.array([[10, 11, 12], [13, 14, 15]])  # 二维数组
t4 = t1 * t3
print(t4)
'''
[[ 0 11 24]
 [39 56 75]]
'''


# 多维数组与一维数组(行数组)+ - * /,就是多维数组的每一行依次与一维数组进行+ - * /。 (前提:多维数组与一维数组的列数一致)
t5 = np.array([6, 7, 8])  # 一维数组(行数组)
t6 = t1 * t5
print(t6)
'''
[[ 0  7 16]
 [18 28 40]]
'''


# 多维数组与多行一列的二维数组(列数组)+ - * /,就是多维数组的每一列依次与列数组进行+ - * /。(前提:多维数组与列数组的行数一致)
t7 = np.array([[50],[60]])  # 多行一列的二维数组(列数组)
t8 = t1 * t7
print(t8)
'''
[[  0  50 100]
 [180 240 300]]
'''

demo.py(numpy,矩阵的乘法,np.dot()):

# coding=utf-8
import numpy as np


t1 = np.array([[0, 1, 2], [3, 4, 5]])  # 二维数组(2行3列)
print(t1)
'''
[[0 1 2]
 [3 4 5]]
'''

t2 = np.array([[10, 11], [12, 13], [14, 15]])  # 二维数组(3行2列)
print(t2)
'''
[[10 11]
 [12 13]
 [14 15]]
'''

# 矩阵的乘法。 内标同可以乘,内标不同不可以乘
t3 = np.dot(t1, t2)
print(t3)
'''
[[ 40  43]
 [148 160]]
'''

demo.py(sum(),数组元素求和):

# coding=utf-8
import numpy as np


t1 = np.arange(12).reshape((3,4))
print(t1)
'''
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
'''

a = np.sum(t1)  # 数组所有元素求和。 nan与数字运算还是nan
print(a)  # 66

b = np.sum(t1, axis=0)   # axis可以指定哪个轴上相加求和
# b = t1.sum(axis=0)  # 数组本身也有sum()函数
print(b)  # [12 15 18 21]

c = np.sum(t1, axis=1)   # axis可以指定哪个轴上相加求和
print(c)  # [6 22 38]

 

 

  • 11
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
numpy数组元素周围的操作可以通过以下几种方式实现: 1. 切片操作:可以使用numpy数组的切片操作来获取数组中元素的周围元素。 例如,对于一个二维数组arr,要获取第i行第j列元素周围的元素,可以使用如下切片操作: ```python arr[i-1:i+2, j-1:j+2] ``` 这将返回一个3x3的子数组,其中心元素为arr[i,j],周围的8个元素为该子数组的其余元素。 2. 使用numpy.pad()函数:numpy.pad()函数可以用来在数组的边缘添加一个或多个值,从而扩展数组的大小。可以使用该函数来添加额外的行和列,然后通过索引访问周围的元素。 例如,对于一个二维数组arr,要获取第i行第j列元素周围的元素,可以使用如下代码: ```python padded_arr = np.pad(arr, ((1, 1), (1, 1)), mode='constant') surrounding = padded_arr[i:i+3, j:j+3] ``` 这将在数组的边缘添加一行和一列,并使用常量值填充这些额外的元素。然后可以使用切片操作来获取中心元素周围的元素。 3. 使用numpy.roll()函数:numpy.roll()函数可以用来沿着给定轴滚动数组的元素。可以使用该函数来将数组的行和列进行滚动,从而获取周围的元素。 例如,对于一个二维数组arr,要获取第i行第j列元素周围的元素,可以使用如下代码: ```python rows, cols = arr.shape row_indices = np.arange(i-1, i+2) % rows col_indices = np.arange(j-1, j+2) % cols surrounding = arr[row_indices][:, col_indices] ``` 这将将第i行向上和向下滚动一行,并将第j列向左和向右滚动一列,从而获取中心元素周围的元素。使用模运算可以确保在数组的边缘滚动时正确处理索引。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值