a1 = np . arange ( 0 , 24 ) . reshape ( ( 4 , 6 ) ) print ( a1 [ 1 ] ) # 获取下标为1的行的数据 #[ 6 7 8 9 10 11]

注意:以上例子是相乘,其实相加、相减、相除也都是类似的。

1.2 连续获取某几行的数据:

# 1. 获取连续的几行的数据
a1 = np.arange(0,24).reshape((4,6))
print(a1)
# [[ 0  1  2  3  4  5]
#  [ 6  7  8  9 10 11]
#  [12 13 14 15 16 17]
#  [18 19 20 21 22 23]]
print(a1[0:2]) #获取0行到1行的数据
# [[ 0  1  2  3  4  5]
#  [ 6  7  8  9 10 11]]
# 2. 获取不连续的几行的数据
print(a1[[0,2,3]])
# [[ 0  1  2  3  4  5]
#  [12 13 14 15 16 17]
#  [18 19 20 21 22 23]]
# 3. 也可以使用负数进行索引
print(a1[[-1,-2]])
# [[18 19 20 21 22 23]
#  [12 13 14 15 16 17]]

1.3 获取某行某列的数据:

#获取某行某列的数据:
a1 = np.arange(0,24).reshape((4,6))
print(a1)
# [[ 0  1  2  3  4  5]
#  [ 6  7  8  9 10 11]
#  [12 13 14 15 16 17]
#  [18 19 20 21 22 23]]
print(a1[1,1]) #获取1行1列的数据
#结果为:7
print(a1[0:2,0:2]) #获取0-1行的0-1列的数据
# [[0 1]
#  [6 7]]
print(a1[[1,2],[2,3]]) #获取(1,2)和(2,3)的两个数据,这也叫花式索引
# [ 8 15]

1.4 获取某列的数据:

#获取某列的数据
a1 = np.arange(0,24).reshape((4,6))
print(a1[:,1]) #获取第1列的数据
#结果为:[ 1  7 13 19]

2、布尔索引:如:a2 = a1 < 10

2.1 布尔运算也是矢量的,比如以下代码:

#布尔索引
a1 = np.arange(0,24).reshape((4,6))
print(a1<10) #会返回一个新的数组,这个数组中的值全部都是bool类型
# [[ True  True  True  True  True  True]
#  [ True  True  True  True False False]
#  [False False False False False False]
#  [False False False False False False]]

2.2 这样看上去没有什么用,假如我现在要实现一个需求,要将a1数组中所有小于10的数据全部都提取出来。那么可以使用以下方式实现:

a1 = np.arange(0,24).reshape((4,6))
a2 = a1 < 10
print(a1[a2]) #这样就会在a1中把a2中为True的元素对应的位置的值提取出来
#结果为:[0 1 2 3 4 5 6 7 8 9]

2.3 其中布尔运算可以有!=、==、>、<、>=、<=以及&(与)和|(或)。示例代码如下:

a1 = np.arange(0,24).reshape((4,6))
a2 = a1[(a1 < 5) | (a1 > 10)]  #这样就会在a1中把a1<5且a1>10的值取出来
print(a2) #[ 0  1  2  3  4 11 12 13 14 15 16 17 18 19 20 21 22 23]

3、值的替换:

3.1 利用索引,也可以做一些值的替换。把满足条件的位置的值替换成其他的值。

比如以下代码:

#利用索引,也可以做一些值的替换
a1 = np.arange(0,24).reshape((4,6))
a1[3] = 0 #将第三行的所有值都替换成0
print(a1)
# [[ 0  1  2  3  4  5]
#  [ 6  7  8  9 10 11]
#  [12 13 14 15 16 17]
#  [ 0  0  0  0  0  0]]

3.2 使用条件索引来实现:

# 使用条件索引来实现
a1 = np.arange(0,24).reshape((4,6))
a1[a1 < 5] = 0 #将小于5的所有值全部都替换成0
print(a1)
# [[ 0  0  0  0  0  5]
#  [ 6  7  8  9 10 11]
#  [12 13 14 15 16 17]
#  [18 19 20 21 22 23]]

3.3 使用函数来实现:

# where函数:
a1 = np.arange(0,24).reshape((4,6))
a2 = np.where(a1 < 10,1,0) #把a1中所有小于10的数全部变成1,其余的变成0
print(a2)
# [[1 1 1 1 1 1]
#  [1 1 1 1 0 0]
#  [0 0 0 0 0 0]
#  [0 0 0 0 0 0]]
                    @[TOC](Numpy数组索引、切片与值的替换)## 1、索引与切片:### 1.1 获取某行的数据::示例代码如下:```python# 1. 如果是一维数组a1 = np.arange(0, 29)print(a1[1])  # 获取下标为1的元素#结果为:1
				
Pandas-DataFrame常用基础知识点总结,代码示例,主要有对某列字符替换、groupby分组统计、聚合统计、根据某列进行排序、dataframe格式转字典、datafrane 多行合并为一行、新增与删除某列、删除某列字符大于8的行、某列格式转换、删除包含某特殊字符的行、对某列文本中包含的字符进行替换删除、截取某列字符、指定时间格式、对空/缺失进行填充、某列数据末尾添加特殊字符、获取索引和数据、删除重复数据、常用的统计计算、使用countains可以用来正则匹配筛选、某列累计求和 cumsum函数、、某列整体计算、多列合并为一列、某两列时间相减、 删除去掉默认索引 、取消索引、重置索引等等。
已知数组1:arr1= [1,2,3,4,5,6,7,8,9] 已知数组2:arr2= [0,0,0,0,0,0,1,1,1] 需要将数组2中为0的数替换数组1中对应位置的数。 结果:result = [0,0,0,0,0,0,7,8,9] arr1[np.where(arr2 == 0)] = 0 np.where(arr2 == 0)返回arr2中为0的索引数组中 vector = numpy.array([5, 10, 15, 20]) equal_to_ten_or_five = (vector == 10) | (vector == 5) vector[equal_to_ten_or_five] = 50 print(vector) [50, 50, 15, 20] 在矩阵中: matrix = nump... t!=t 返回bool类型的数组(矩阵) np.count_nonzero() 返回的是数组中的非0元素个数;true的个数。 np.isnan() 返回bool类型的数组。 那么问题来了,在一组数据中单纯的把nan替换为0,合适么?会带来什么样的影响? 比如,全部替换为0后,替换之前的平均如果大于0,替换之后的均肯定会变小,所以更一般的方式是把缺失的数替换为均(中)或者是直接删除有缺失的一行 demo.py(numpy,将数组中的nan替换成对应的均):
Warehouse Warehouse是下一代Python软件包系统信息库,旨在替换当前为PyPI(其源代码驻留在Github上)提供支持的旧代码库。 您可以在文档中找到更多信息。 Warehouse Warehouse是下一代Python软件包系统信息库,旨在替换当前为PyPI(其源代码驻留在Github上)提供支持的旧代码库。 您可以在文档中找到更多信息。 入门在本地运行Warehouse副本需要使用docker和docker-compose。 假设您具有这两项,则可以使用以下命令:$#启动本地环境$ make serve $#在调试模式下启动本地环境(pdb e 结果是生成一个新数组,根据条件来判断,新数组的元素都是True或False import numpy as np a1=np.arange(24).reshape((4,6)) print(a1>10) [[False False False False False False] [False False False False False True] [ True True True True True True]