代码:
import numpy as np
# ravel
# 副本和视图的区别
# 视图
arr = np.array([np.arange(1, 5), np.arange(5, 9)])
print(arr)
print(type(arr))
# brr = arr.ravel() # 默认按行展平成一维数组,返回的是一个视图
brr = arr.ravel(order='F') # 默认按列展平成一维数组,返回的是一个副本
print(brr)
# 如果修改视图/副本brr的任意一个元素,原数组arr是否相应的发生改变
brr[0] = 100
print(brr)
print(arr)
# faltten
crr = arr.flatten(order='F')
print(crr)
crr[0] = 100
print(crr)
print(arr)
arr[0, 0] = 1000
print(arr)
# astype
print(arr.dtype)
drr = arr.astype(np.int8)
print(drr)
# fill
err = np.zeros((3, 3))
print(err)
err.fill(10)
print(err)
# sum prod
# sum
arr = np.random.randint(1, 100, (3, 4))
print(arr)
print(arr.sum())
print(arr.sum(axis=0)) # 按列求和
print(arr.sum(axis=1)) # 按行求和
# prod
arr = arr.astype(np.int64)
print(arr.prod())
print(arr.prod(axis=0)) # 按列求累积
print(arr.prod(axis=1)) # 按行求累积
# mean var std
# mean
print(arr.mean())
print(arr.mean(axis=0)) # 按列求平均数
print(arr.mean(axis=1)) # 按行求平均数
# var
print(arr.var())
print(arr.var(axis=0)) # 按列求方差
print(arr.var(axis=1)) # 按行求方差
# std
print(arr.std())
print(arr.std(axis=0)) # 按列求标准差
print(arr.std(axis=1)) # 按行求标准差
# max min ptp median
# max
print(arr.max())
print(arr.max(axis=0)) # 求每一列的最大值
print(arr.max(axis=1)) # 求每一行的最大值
# min
print(arr.min())
print(arr.min(axis=0)) # 求每一列的最小值
print(arr.min(axis=1)) # 求每一行的最小值
# ptp
print(arr.ptp()) # 整个数组的波动范围
print(arr.ptp(axis=0)) # 求每一列的波动范围
print(arr.ptp(axis=1)) # 求每一行的波动范围
# median
print(np.median(arr)) # 整个数组的中位数
print(np.median(arr, axis=0)) # 求每一列的中位数
print(np.median(arr, axis=1)) # 求每一行的中位数
# argmax argmin
# argmax
print(arr)
print("最大值的索引位置:", arr.argmax())
print("每一行最大值的索引:", arr.argmax(axis=1))
print("每一列最大值的索引:", arr.argmax(axis=0))
# argmin
print(arr)
print("最小值的索引位置:", arr.argmin())
print("每一行最小值的索引:", arr.argmin(axis=1))
print("每一列最小值的索引:", arr.argmin(axis=0))
# view copy
arr = np.random.randint(10, 1000, (4, 6))
brr = arr.view()
brr.sort()
print("视图: \n", brr)
print("原数组: \n", arr)
c = arr.copy()
c.sort()
print("副本: \n", c)
print("原数组: \n", arr)
# compress
arr = np.random.randint(10, 100, (4, 3), dtype=np.int64)
print((arr > 50).flatten())
new_data = np.compress((arr > 50).flatten(), arr)
print(new_data)
# transpose 多维数组的转置
arr = np.array([[np.arange(1,4), np.arange(2,5)], [np.arange(1,4), np.arange(2,5)]])
print(arr)
print(arr.ndim)
print(arr.shape)
brr = arr.transpose(0, 2, 1)
print(brr.shape)
print(brr)
# hstack vstack concatenate
# hstack:水平方向拼接
arr = np.array([np.arange(3, 7), np.arange(2, 6)])
brr = np.array([np.arange(1, 5), np.arange(2, 6)])
print("arr:\n", arr)
print("brr:\n", brr)
crr = np.hstack([arr, brr])
print("crr:\n", crr)
# vstack:垂直方向拼接
drr = np.vstack([arr, brr])
print("drr:\n", drr)
# concatenate:水平方向拼接
err = np.concatenate([arr, brr], axis=1)
print("err:\n", err)
# concatenate:垂直方向拼接
frr = np.concatenate([arr, brr], axis=0)
print("frr:\n", frr)
# hsplit vsplit split
# hsplit:水平方向分割
ls = np.hsplit(crr, 4) # 份数
print(ls)
ls = np.hsplit(arr, [3])
print(ls)
# vsplit:垂直方向分割
ls = np.vsplit(drr, 2)
print(ls)
# split:水平方向分割
ls = np.split(crr, 4, axis=1)
print(ls)
# split:垂直方向分割
ls = np.split(drr, 2, axis=0)
print(ls)
# loadtxt()函数读取文件
data = np.loadtxt(
"test.csv",
encoding="utf-8",
delimiter=",",
skiprows=1,
usecols=(1),
dtype=np.int64
)
print(data)
# savetxt()函数写文件
np.savetxt(
"data.csv", # 文件名称
drr, # 需要写入的数组对象
fmt="%d", # 整型字符串
delimiter=",", # 分隔符
encoding="utf-8",
header="一,二,三,四", # 标题行
footer="这是结尾", # 结尾行
comments="" # 注释
)
ndarray常用方法
astype()方法:
用于将数组的元素类型(dtype)转换为指定的类型。这个方法创建并返回一个新的数组,具有指定的数据类型,而原始数组保持不变
基本语法:
new_array = array.astype(dtype, copy=True,order='K')
sum()方法:
求和
基本语法:
numpy.sum(a,axis=None,dtype=None)
prod()方法:
求乘积
基本语法:
numpy.prod(a,axis=None,dtype=None)
mean()方法:
平均值
基本语法:
numpy.mean(a,axis=None,dtype=None)
var()方法:
方差:表示数据与其均值之间的偏离程度
基本语法:
numpy.var(a,axis=None,dtype=None)
std()方法:
标准差
基本语法:
numpy.std(a,axis=None,dtype=None)
max()方法:
最大值
基本语法:
numpy.max(a,axis=None)
min()方法:
最小值
基本语法:
numpy.min(a,axis=None)
ptp()方法:
最大值与最小值的差
基本语法:
numpy.ptp(a,axis=None)
median()方法:
中位数
基本语法:
numpy.median(a,axis=None)
argmax()方法:
返回数组中最大值的索引位置
基本语法:
numpy.argmax(a,axis=None)
argmin()方法:
返回数组中最小值的索引位置
基本语法:
numpy.argmin(a,axis=None)
transpose()方法:
多维数组的转置
Sort()方法:
用于对数组进行排序,可以沿指定的轴对数组进行升序排序,并返回排序后的新数组,而不会改变原数组。也可以使用axis参数指定排序的方向,使用kind参数选择不同的排序方法。
基本语法:
numpy.sort(a,axis=-1,kind=None)
view()方法:
创建一个数组的视图(即对原数组的引用),而不是复制数据
基本语法:
ndarray.view(dtype=None, type=None)
copy()方法:
创建一个数组的视图(即对原数组的引用),而不是复制数据
基本语法:
ndarray.copy(dtype=None, type=None)
tolist()方法:
用于将数组转换为Python的原生列表(list)类型
基本语法:
ndarray.tolist( )
compress()方法:
用于筛选数组元素的函数,它根据提供的布尔数组或索引数组,从原数组中提取满足条件的元素
基本语法:
numpy.compress(condition, a, axis=None)
hstack()方法:
将两个数组在水平方向拼接
基本语法:
C = hstack((A,B))
vstack()方法:
将两个数组在垂直方向拼接
基本语法:
C = vstack((A,B))
concatenate()方法:
将两个数组拼接,当axis=1时,在水平方向进行拼接;当axis=0时,在垂直方向进行拼接。
基本语法:
水平:C = concatenate((A,B), axis = 1) 垂直:C = concatenate((A,B), axis = 0)
hsplit()方法:
将两个数组在水平方向上进行分隔
基本语法:
B = hsplit(A, n)
vsplit()方法:
将两个数组在垂直方向上进行分隔
基本语法:
B = vsplit(A, n)
split()方法:
分隔数组。当axis=1时,在水平方向进行分隔;当axis=0时,在垂直方向进行分隔。
基本语法:
水平:B = split(A, n, axis=1) 垂直:C = split(A, n, axis=0)