import numpy as np
arr = np.array(
[
[
[3.1,3.14],
[3.141,3.1415]
],
[
[3.14159,3.141592],
[3.1415926,3.14159265]
]
]
)
print(arr[:1,:1])
# np.array() 是 numpy 库中的一个函数,用于创建数组。
# 这里传入的参数是一个嵌套的列表,该列表定义了一个三维数组。这个三维数组可以看作是由两个二维数组组成,每个二维数组又由两个一维数组组成,每个一维数组包含两个浮点数。
# 数组 arr 的形状(shape)为 (2, 2, 2),表示第一维有 2 个元素,第二维有 2 个元素,第三维有 2 个元素。
# arr[:1,:1] 是对数组 arr 进行切片操作。
# 在 NumPy 数组中,切片操作使用冒号 : 来指定范围。arr[:1,:1] 表示取数组 arr 的前 1 个第一维元素中的前 1 个第二维元素。
# 具体来说,第一维的 :1 表示只取第一维的第 0 个元素(索引从 0 开始),第二维的 :1 表示只取该元素中第二维的第 0 个元素。第三维没有指定切片范围,意味着取该元素中第三维的所有元素。
# 最终打印的结果是:
# [[[3.1 3.14]]]
[[[3.1 3.14]]]
import numpy as np
arr=np.array([[[3.1,3.14],[3.141,3.1415]],[[3.14159,3.141592],
[3.1415926,3.14159265]]])
# 在 numpy 数组中,切片操作使用方括号 [] 来指定索引范围。
# arr[:2, :1] 表示对数组进行切片,第一个维度取前 2 个元素(由于数组本身第一个维度就只有 2 个元素,所以这里等价于取整个第一个维度),第二个维度取前 1 个元素。
# = 3.14159265358 表示将切片得到的这些元素统一赋值为 3.14159265358。
arr[:2,:1]=3.14159265358
print(arr)
[[[3.14159265 3.14159265]
[3.141 3.1415 ]]
[[3.14159265 3.14159265]
[3.1415926 3.14159265]]]
# NumPy模块布尔型索引否定条件提取数组中的数据
# 代码中使用了salary[names!="业务员"]语句,用"!="表示names
# 数组中不是“业务员”职位的人员;也使用了salary[~(names=="业务
# 员")]语句,用“~”表示同样的意思。上述代码的运行结果如图2.38
# 所示
import numpy as np
names = np.array(["业务员","业务员","经理","主管","业务员","主管"])
salary=np.array([2520.00,3600.00,2745.00,4200.00,3805.00,3947.00])
print(salary[names!="业务员"])
print("----------------------------")
print(salary[~(names=="业务员")])
[2745. 4200. 3947.]
----------------------------
[2745. 4200. 3947.]
# NumPy模块布尔型索引多条件提取数组中的数据
import numpy as np
names = np.array(["业务员","业务员","经理","主管","业务员","主管"])
salary = np.array([2520.00,3600.00,2745.00,4200.00,3805.00,3947.00])
print(salary[(names=="经理")|(names=="主管")])
print("-------------------")
print(salary[(names=="主管")&(salary>4000)])
[2745. 4200. 3947.]
-------------------
[4200.]
# NumPy模块transpose()方法实现数组转置
# 行列转换,最开始是一行行的数据,现在变成了一列列的数据
import numpy as np
arr=np.array([[1,1,1,1,1],[2,2,2,2,2],[3,3,3,3,3],[4,4,4,4,4],
[5,5,5,5,5]])
arr_trans=arr.transpose()
print(arr_trans)
[[1 2 3 4 5]
[1 2 3 4 5]
[1 2 3 4 5]
[1 2 3 4 5]
[1 2 3 4 5]]
# transpose()方法也可以用一个特殊的T属性来代替
import numpy as np
arr=np.array([[1,1,1,1,1],[2,2,2,2,2],[3,3,3,3,3],[4,4,4,4,4],
[5,5,5,5,5]])
arr_trans=arr.T
print(arr_trans)
[[1 2 3 4 5]
[1 2 3 4 5]
[1 2 3 4 5]
[1 2 3 4 5]
[1 2 3 4 5]]
import numpy as np
arr = np.random.randn(4,)
print(arr)
result = np.dot(arr.t, arr)
print(result)
import numpy as np
# 导入 NumPy 库并简写为 np,便于后续调用。
arr = np.array(
[
[
[3.1, 3.14],
[3.141, 3.1415]
],
[
[3.14159, 3.141592],
[3.1415926, 3.14159265]
]
]
)
# 创建一个三维 NumPy 数组,其结构为两层(第一维)、每层两行(第二维)、每行两列(第三维),数值为逐步精确的圆周率近似值。
print(arr[:1, :1])
# 对数组进行切片操作:取第一维的前1个元素(即第一层),再取第二维的前1个元素(即第一行),最终输出该子数组。
代码分析
1. 导入库
Python
复制
import numpy as np
作用:导入 numpy 库并简写为 np。numpy 是 Python 中用于高效科学计算的核心库12。
关键点:np.random.randn 和 np.dot 均依赖此库。
2. 生成随机数组
Python
复制
arr = np.random.randn(4,)
np.random.randn :生成符合标准正态分布(均值为 0,标准差为 1)的随机数。
输出形状:参数 (4,) 表示生成一个一维数组,包含 4 个元素。例如:
Python
复制
arr = [-0.123, 1.456, 0.789, -2.345]
3. 计算点积
Python
复制
result = np.dot(arr.T, arr)