NumPy基础--ndarray
来源:互联网 发布:imei校验码算法 编辑:程序博客网 时间:2024/06/05 15:15
- 创建ndarray
- 使用array函数
- 使用数组创建函数
- ndarray的数据类型
- 索引和切片
- 基本的索引和切片
- 布尔型索引
- 花式索引
- 数组转置和轴对换
- T属性
- transpose函数
- swapaxes函数轴对换
- 创建ndarray
创建ndarray
1. 使用array函数
data1 = [[1,2,3,4],[5,6,7,8]]arr1 = np.array(data1)>> print arr1array([[1,2,3,4], [5,6,7,8]])>> print arr1.ndim2>> print arr1.shape(2,4)>> print arr1.dtypedtype('int64')
2. 使用数组创建函数
例如:
np.zeros(5)np.zeros((3, 6))np.empty((2, 3, 2))np.arange(10)
ndarray的数据类型
通过astype方法显示地转换其dtype
arr = np.array([1.2, 3.7, -2.6, 0.5])>> arr.dtypedtype('float64')arr.astype(np.int32)>> arrarray([1, 3, -2, 0], dtype=int32)
也可以直接调用已有的数组dtype
arr1 = np.arange(10)arr2 = np.array([1, 2, 3], dtype=np.float64)arr1.astype(arr2.dtype)
索引和切片
1. 基本的索引和切片
# 一维数组arr = np.arange(10)>> arrarray([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])>> arr[5:8]array([5, 6, 7])arr[5:8] = 12>> arrarray([0, 1, 2, 3, 4, 12, 12, 12, 8, 9])# 数组切片是原始数组的视图,意味着数据不会被复制,视图上的任何修改都会直接反映到源数组上arr_slice = arr[5:8]arr_slice[1] = 123>> arrarray([0, 1, 2, 3, 4, 12, 123, 12, 8, 9])# 如果想得到的是切片的一份副本而非视图,就要显式地进行复制操作arr_slice = arr[5:8].copy()# 多维数组arr2 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])>> arr2[0]array([1, 2, 3])>> arr2[0, 2]3>> arr2[:2]array([1, 2, 3], [4, 5, 6])>> arr2[:2, 1:]array([2, 3], [5, 6])
2. 布尔型索引
names = np.array(['Bob', 'Joe', 'Will', 'Bob', 'Will', 'Joe', 'Joe'])data = randn(7, 4) #randn生成正态分布的随机数据>> dataarray([[-0.048, 0.5433, -0.2349, 1.2792], [-0.268, 0.5465, 0.0939, -2.0445], [-0.047, -2.026, 0.7719, 0.3103], [2.1452, 0.8799, -0.0523, 0.0672], [-1.0023, -0.1698, 1.1503, 1.7289], [0.1913, 0.4544, 0.4519, 0.5535], [0.5994, 0.8174, -0.9297, -1.2564]])>> names == 'Bob'array([ True, False, False, True, False, False, False], dtype=bool)# 这个布尔型数组可用于数组索引,布尔型数组长度必须和索引的轴长度一致>> data[names == 'Bob']array([[-0.048, 0.5433, -0.2349, 1.2792], [2.1452, 0.8799, -0.0523, 0.0672]])# 可以使用不等于符号,负号,对条件进行否定data[names != 'Bob']data[-(names == 'Bob')]# 可以将data中所有负值设为0data[data < 0] = 0
3. 花式索引
arr = np.arange(32).reshape((8, 4))>> arrarray([0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], [12, 13, 14, 15], [16, 17, 18, 19], [20, 21, 22, 23], [24, 25, 26, 27], [28, 29, 30, 31])# 选取元素(1,0) (5,3) (7,1) (2,2)>> arr[[1, 5, 7, 2],[0, 3, 1, 2]]array([4, 23, 29 , 10])# 选取矩阵的行列子集>> arr[[1, 5, 7, 2],[ : , 0, 3, 1, 2]]array([[4, 7, 5, 6], [20, 23, 21, 22], [28,31, 29, 30], [8, 11, 9, 10]])# 使用np.ix_函数,它可以将两个一维证书数组转换为一个用于选取方形区域的索引器>> arr[np.ix_([1, 5, 7, 2],[0, 3, 1, 2])]array([[4, 7, 5, 6], [20, 23, 21, 22], [28,31, 29, 30], [8, 11, 9, 10]])
数组转置和轴对换
1. T属性
arr = np.random.randn(6, 3)np.dot(arr.T, arr) #np.dot计算矩阵内积
2. transpose函数
arr = np.arange(16).reshape((2, 2, 4))>> arrarrary([[[0, 1, 2, 3], [4, 5, 6, 7]], [[8, 9, 10, 11], [12, 13, 14, 15]]])>> arr.transpose((1, 0, 2))arrary([[[0, 1, 2, 3], [8, 9, 10, 11]], [[4, 5, 6, 7], [12, 13, 14, 15]]])
3. swapaxes函数(轴对换)
>> arrarray([[0, 1, 2, 3], [4, 5, 6, 7]], [[8, 9, 10, 11], [12, 13, 14, 15]])# 把轴1,2进行互换, 原本的shape(2,2,4)变为(2,4,2)>> arr.swapaxes(1, 2)array([[[0, 4], [1, 5], [2, 6], [3, 7]], [[8, 12], [9, 13], [10, 14], [11, 15]]])
阅读全文
0 0
- NumPy基础--ndarray
- numpy基础学习-ndarray对象
- numpy基础——ndarray对象属性
- numpy基础——ndarray对象方法
- NumPy基础 -- 1. ndarray (多维数组对象)
- numpy基础——ndarray.shape
- numpy.ndarray
- numpy -- ndarray
- ndarray.Numpy
- numpy基础——关于 ndarray 的一些尝试
- python:NumPy基础(1),ndarray多维数组对象
- numpy中的ndarray对象
- NumPy与ndarray简介
- numpy.ndarray.flatten
- numpy.ndarray.flatten
- Numpy的ndarray简介
- ndarray index in numpy
- 'numpy.ndarray' python.list
- 字符设备驱动(一)
- Linux目录结构
- 【Appium+python】特殊键盘事件处理-国产机型的搜索处理。
- pyspark与jupyter集成
- python和Django创建博客首页视图
- NumPy基础--ndarray
- Leetcode之Move Zeroes 问题
- 哈哈日语 日语入门需要注意的4点
- String 与 int之间的类型转换
- Docker集中化web界面管理平台shipyard
- 阿里云大鱼短信api
- 【深度学习&分布式】Parameter Server 详解
- sql 聚合函数有哪些
- 学习笔记:ES6之Symbol