横向量和列向量是可以任意加减的。
numpy数组下标是可以越界的!如果越界了,会自动检测,只返回到结尾的数据。
和Python的列表序列不同,通过下标范围获取的新的数组是原始数组的一个视图,它与原始数组共享同一块数据空间。
当使用整数序列对数组元素进行存取时,将使用整数序列中的每个元素作为下标,整数序列可以是列表或者数组。使用整数序列作为下标获得的数组不和原始数组共享数据空间。
当使用布尔数组b作为下标存取数组x中的元素时,将收集数组x中所有在数组b中对应下标为True的元素,使用布尔数组作为下标获得的数组不和原始数组共享数据空间。
注意这种方式只对应于布尔数组(np.array([True, False, ....])),不能使用布尔列表([True, False, ....])。长度不够时,不够的部分都当作False
如果是布尔列表,则把True当作1, False当作0,按照整数序列方式获取x中的元素。
>>> x[np.array([True, False, True, True])] = -1, -2, -3
>>> # 布尔数组下标也可以用来修改元素 >>> x array([-1, 4, -2, -3, 1])使用布尔数组进行numpy数组值的替换:a[ a == 3] = 4; ll_array[np.array(labels_list) == label] = km_model.centers[label]
>>> np.arange(0, 60, 10).reshape(-1, 1) + np.arange(0, 6) array([[ 0, 1, 2, 3, 4, 5], [10, 11, 12, 13, 14, 15], [20, 21, 22, 23, 24, 25], [30, 31, 32, 33, 34, 35], [40, 41, 42, 43, 44, 45], [50, 51, 52, 53, 54, 55]])
假设x是一个二维数组,inds是整数序列的数组array类型表示的下标:
如果inds是一个一维array,则x[inds]返回的是一个二维array;但是如果inds是一个二维array,则x[inds]返回的是一个三维array。
persontype = np.dtype({ 'names':['name', 'age', 'weight'], 'formats':['S32','i', 'f']}) a = np.array([("Zhang",32,75.5),("Wang",24,65.2)], dtype=persontype)>>> b=a[:]["age"] # 或者a["age"] >>> b array([32, 24]) >>> b[0] = 40 >>> a[0]["age"] 40我们不但可以获得结构元素的某个字段,还可以直接获得结构数组的字段,它返回的是原始数组的视图
在创建dtype对象时,可以传递参数align=True,这样numpy的结构数组的内存对齐和C语言的结构体就一致了