import numpy as np
一. numpy 的 array 使用
array = [1,2,3,4]
array = np.array([1,2,3,4]) #转变为了数组,增加了功能
array + 1
#---out---
#array([2, 3, 4, 5])
#运算后只输出,不更改自身
#还可以和其他的列表进行相加,例如下面的列表array1
#但是列表的数量必须一致
#可以通过 len(array) 或者 array.shape 来查看array的数量
#查看array的其中一个值,可以通过 array[数字] 来获得,索引是从 0 开始的
array1 = [1,2,3,4]
array1 + 1
#---out---
#---------------------------------------------------------------------------
#TypeError Traceback (most recent call last)
# in
#----> 1 array1 + 1
#TypeError: can only concatenate list (not "int") to list
print(type(array))
#
#属性是 ndarray
numpy为了底层计算的高效性 会默认要求里面都是同样的类型
不同的时候,会自动默认转换
例如 float 类型都会转换成 字符串
例如:
array = [1,2,3,4,'5']
array = np.array(array)
array
OUT:array([‘1’, ‘2’, ‘3’, ‘4’, ‘5’], dtype=‘ out:(5,) #显示了有多少个数字,并且是以数组的形式输出的 array([array([1, 2, 3, 4]), list([10, 20, 30])], dtype=object) out: array([‘1’, ‘2’, ‘3’, ‘4’, ‘5’], dtype=‘ out: array([1, 2, 3, 4, ‘5’], dtype=object) array * 2 #如果所有类型都有相同的同一个方法,例如字符串也可以*2 , ‘5’ 就变成了 ’55‘, 但是不支持 加法 array = np.array([1,2,3,4,5],dtype = np.float64) array([False, False, False, True, True, True]) out: 4,5,6 bool类型的快速生成: out: array([False, True, False, False, False, True, False, False, False, in : test_array.dtype 不改变原值,会输出计算后的值 axis=0 #以 X 为轴进行纵列计算 out : 720 # 等价于 1 * 2 * 3 * 4 * 5 * 6 out: array([ 4, 10, 18]) #以 X 为轴,求每列的最小值 #以X为轴,求每列的最大值 #以X为轴 ,求每列的最小值的索引位 #以X为轴,求均值 #以X为轴,求均值 #小于 2 的数字 都会转换为 2。 四舍五入, 对小数进行计算 对小数点后几位,进行精度输出 numpy进行排序 out: array([[1.3, 1.5, 1.8], 显示排序后,现在的数字的原来的索引是多少 生成数字 out: 增加了空的shape值,空的维度 可以压缩回去。将没用的维度缩减 #行列位置转换 #拼接在一起,将两个相同的数组进行拼接 还可以选择是横着拼或者竖着拼,如下 #从 2 开始到 20 每两个数字一跳 #从 0 到 10 构建 50 个数字 #生成大数字 #构造网格 , 假如 X 只有3个数字,X会构成3*3的多维数组 #构造横向量 #构造竖向量 欢迎分享,转载请注明来源:内存溢出tang_array.itemsize #查看占了多少字节。int64 和 int32不同
# *** 作系统不同则类型不同 int64 是8 ,int32 是4
array.shape
二. numpy 多维的使用
例如:array.size 或 np.size(X) 只显示总数,不显示维度 out: 5
使用起来和列表的规则基本相同,索引切片 也是支持的,规则也是左包含,右不包含test_array = np.array([ [1,2,3],
[4,5,6],
[7,8,9]])
三. numpy array 的 类型
test_array.shape
#out: (3,3) 这里显示的是3行3列
test_array.size
#out: 9
#多维取值:
test_array[1,1]
#得到第一行 的第一列的值 得到 5
#所有行的第一列
test_array[:,1]
#第0行的,前两列
test_array[0,0:2]
#修改定位的点,例如第一列的第一行
test_array[1,1] = 10
# 想要深度拷贝 ndarray 属性的值, 如果直接 = 则是只是复制了 内存指针。
test_array2 = test_array.copy()
array.fill(0)
#将里面的值都刷新为 0
np.array([array,array2],dtype=object)
array = np.array([1,2,3,4,'5'])
array = np.array([1,2,3,4,'5'],dtype = np.object)
#得出的结果是什么都可存了
新版本dtype不能直接写 float64 或者 float32
可以mask = np.array([0,0,0,2,4,5],dtype=bool)
#大于 0 的都是Truearray = [1,2,3,4,5,6]
array = np.array(array)
array[mask]
array支持 > < 判断
例如:random_array = np.random.rand(10)
random_array > 0.5
True])test_array = np.array([1,2,3,4,5],dtype=float)
out: float64 #每个占用8字节
in: test_array.nbytes
out: 40test_array.astype(np.float32)
np.sum(test_array,axis=0)
或
test_array.sum(axis=0)
axis=1 #以列为轴 进行 横统计
axis=-1 #相当于最后一个轴test_array.ndim
#查看数据目前有几个轴
test_array.prod()
test_array.prod(axis=0)
test_array.min(axis=0)
test_array.max(axis=0)
test_array.argmin(axis=0)
test_array.mean(axis=0)
test_array.std(axis=0)
test_array.var(axis=0)
test_array.clip(2,4)
#大于 4 的数字 都会转换为 4。test_array.round()
test_array.round(decimals=1)
test2_array = ([[1.5,1.3,1.8],
[2.4,1.1,3.5]])
test3_array = np.array(test2_array)
np.sort(test3_array)
[1.1, 2.4, 3.5]])np.argsort(test3_array)
np.linspace(0,10,10)
生成数字 从 0 开始,到 10 结束,按规则生成 10 个数字test2_array = ([1.5,1.3,1.8],
[3.2,2.3,1.2],
[1.5,3.3,3.5],
[4.1,4.3,1.8])
test3_array = np.array(test2_array)
index = np.lexsort([-1*test3_array[:,0],test3_array[:,2]])
#第三列做升序,在第三列相等的情况下,第一列做降序
index
test4_array = test3_array[index]
test4_array
array([1, 3, 0, 2])
array([[3.2, 2.3, 1.2],
[4.1, 4.3, 1.8],
[1.5, 1.3, 1.8],
[1.5, 3.3, 3.5]])test_array = test_array[: , np.newaxis , np.newaxis]
test_array.shape
test_array = test_array.squeeze()
test_array.shape
test_array.T
test_ALL_array = np.concatenate((a,b))
test_ALL_array
test_ALL_array = np.concatenate((a,b),axis = 0)
test_ALL_array
#另一种方式
np.vstack((a,b)) #竖着拼
#或者
np.hstack((a,b)) #横着拼
六.np核心命令
a.ravel()
#或者
a.flatten()
np.arange(2,20,2, dtype=np.float32)
np.linspace(0,10,50)
np.logspace(0,10,5)
x, y = np.meshgrid(x,y)
#y 同理。 比较像立体np.r_[0:10:1]
np.c_[0:10:1]
评论列表(0条)