import numpy as np
arr = np.array([[1., 2., 3.], [4., 5., 6.]])
arr.shape
arr
arr * arr
arr - arr # 大小相等的数组的任何运算都会被运用到元素级别
1 / arr
arr ** 0.5
# 基本的索引 和切片
arr = np.arange(10)
arr
arr[5]
arr[5:8]
arr[5:8] = 12 # 把5~8都赋值为12 ,这里把标量赋值给一个切片,这个值就会自动传播 也就是广播
arr
arr_slice = arr[5:8]
arr_slice[1] = 12345
arr # 数组的切片就是原始数组的视图,所以视图的修改会直接的反应到原始的数组上
arr_slice[:] = 64
arr
arr[5:8].copy() # 得到一个切片的副本
arr2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
arr2d[2] # 索引位置上的元素变成了一维数组
arr2d[0][2]
arr2d[0, 2] # 访问某一个元素上下两种方法等价
arr3d = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])
arr3d
arr3d[0] # 返回一个2*3的数组
# 在多维的数组当中如果少了后面的索引就UI返回一个对象是一个维度低一点的ndarray
old_values = arr3d[0].copy()
arr3d[0] = 42
arr3d
arr3d[0] = old_values
arr3d
# 同理也可以用arr3d[1,0]访问索引以(1,0)开头的那些值
arr3d[1, 0]
arr[1:6]
arr2d
arr2d[:2] # 切片不包括arr2d[2]也就是说是在 2z之前的
arr2d[:2, 1:] # 先沿着第一个轴开始切,切片是沿着一个轴向取元素
arr2d[1, :2]
arr2d[2, :1]
arr2d[:, :1] # 只有冒号表达选取了整个轴
# 同理切片的表达式赋值也扩散到整个选选区
arr2d[:2, 1:0] = 0
arr2d
利用Python数据分析:Numpy基础(二)
最新推荐文章于 2022-03-04 00:17:34 发布