numpy_ndarray的矩阵运算
                                            ndarry的矩阵运算
数组是编程中的概念,矩阵、矢量是数学概念
在计算机编程中,矩阵可以用数组形式定义,矢量可以用结构定义
在酉阳土家族苗族等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站设计、成都做网站 网站设计制作按需网站策划,公司网站建设,企业网站建设,高端网站设计,网络营销推广,外贸网站制作,酉阳土家族苗族网站建设费用合理。
1. 矢量运算:相同大小的数组间运算应用在元素上
示例代码(1):
# 矢量与矢量运算
arr = np.array([[1, 2, 3],
              [4, 5, 6]])
print("元素相乘:")
print(arr * arr)
print("矩阵相加:")
print(arr + arr)运行结果:
元素相乘:
[[ 1  4  9]
 [16 25 36]]
矩阵相加:
[[ 2  4  6]
 [ 8 10 12]]- 矢量和标量运算:“广播” - 将标量“广播”到各个元素
# 矢量与标量运算
print(1. / arr)
print(2. * arr)运算结果:
[[ 1.          0.5         0.33333333]
 [ 0.25        0.2         0.16666667]]
[[  2.   4.   6.]
 [  8.  10.  12.]]ndarray的索引与切片
- 一维数组的索引与切片
与Python的列表索引功能相似
示例代码(1):
# 一维数组
arr1 = np.arange(10)
print(arr1)
print(arr1[2:5])运行结果:
[0 1 2 3 4 5 6 7 8 9]
[2 3 4]- 多维数组的索引与切片
arr[r1:r2, c1:c2]
arr[1,1]等价arr[1][1]
[:]代表某个维度的数据
示例代码(2):
# 多维数组
arr2 = np.arange(12).reshape(3, 4)
print(arr2)
print(arr2[1])
print(arr2[0:2, 2:])
print(arr2[:, 1:3])运行结果:
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
[4 5 6 7]
[[2 3]
 [6 7]]
[[ 1  2]
 [ 5  6]
 [ 9 10]]- 条件索引
布尔值多维数组:arr[condition], condition也可以是多个条件组合。
注意,多个条件组合要使用& |连接,而不是Python的 and or。
示例代码(3):
# 条件索引
# 找出 data_arr 中 2005年后的数据
data_arr = np.random.rand(3, 3)
print(data_arr)
year_arr = np.array([[2000, 2001, 2000],
             [2005, 2002, 2009],
             [2001, 2003, 2010]])
is_year_after_2005 = year_arr >= 2005
print(is_year_after_2005, is_year_after_2005.dtype)
filtered_arr = data_arr[is_year_after_2005]
print(filtered_arr)
#filtered_arr = data_arr[year_arr >= 2005]
#print(filtered_arr)
# 多个条件
filtered_arr = data_arr[(year_arr <= 2005) & (year_arr % 2 == 0)]
print(filtered_arr)运行结果:
[[ 0.53514038  0.93893429  0.1087513 ]
 [ 0.32076215  0.39820313  0.89765765]
 [ 0.6572177   0.71284822  0.15108756]]
[[False False False]
 [ True False  True]
 [False False  True]] bool
[ 0.32076215  0.89765765  0.15108756]
#[ 0.32076215  0.89765765  0.15108756]
[ 0.53514038  0.1087513   0.39820313]ndarray的维数转换
二维数组直接使用转换函数:transpose()
高维数组转换要指定维度编号参数(0,1,2,……),注意参数是元组
示例代码:
arr = np.random.rand(2, 3)  # 2*3 数组
print(arr)
print(arr.transpose())      # 转换为 3*2 数组
arr3d = np.random.rand(2, 3, 4) # 2*3*4数组,2对应0, 3对应1,4对应2
print(arr3d)
print(arr3d.transpose((1, 0, 2)))   # 根据维度编号,转换为3*2*4数组运行结果:
# 高维数组转换
# 转换前:
[[[ 0.91281153  0.61213743  0.16214062  0.73380458]
  [ 0.45539155  0.04232412  0.82857746  0.35097793]
  [ 0.70418988  0.78075814  0.70963972  0.63774692]]
 [[ 0.17772347  0.64875514  0.48422954  0.86919646]
  [ 0.92771033  0.51518773  0.82679073  0.18469917]
  [ 0.37260457  0.49041953  0.96221477  0.16300198]]]
# 转换后:
[[[ 0.91281153  0.61213743  0.16214062  0.73380458]
  [ 0.17772347  0.64875514  0.48422954  0.86919646]]
 [[ 0.45539155  0.04232412  0.82857746  0.35097793]
  [ 0.92771033  0.51518773  0.82679073  0.18469917]]
 [[ 0.70418988  0.78075814  0.70963972  0.63774692]
  [ 0.37260457  0.49041953  0.96221477  0.16300198]]]标题名称:numpy_ndarray的矩阵运算
文章起源:http://www.cqwzjz.cn/article/pdisii.html

 建站
建站
 咨询
咨询 售后
售后
 建站咨询
建站咨询 
 
