numpy

本文介绍了NumPy中数组的创建方法,包括array、zeros、ones等函数,并详细讲解了数组的基本属性、索引与切片、转置及常用运算。同时涵盖了聚合函数、where与unique函数的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


一、ndarrary 的创建

import numpy as np

数组的创建方式:

               (1)array函数:接收一个普通的python序列,并将其转换为ndarray
               (2)zeros函数:创建指定长度或者形状的全零数组。
               (3)ones函数: 创建指定长度或者形状的全1数组。
               (4)empty函数:创建一个没有任何具体值的数组(准备地说是创建一些未初始化的ndarray多维组)
               (5)arange函数: 类似python的range函数,通过指定开始值、终值和步长来创建一个一维数组
                            注意:最终创建的数组不包含终值
               (6)linspace函数:通过指定开始值、终值和元素个数来创建一个一维数组,
                             数组的数据元素符合等差数列,
                           可以通过endpoint关键字指定是否包含终值,默认包含终值
               (7)logspace函数:和linspace函数类似,不过创建的是等比数列数组
               (8)使用随机数填充数组,即使用numpy.random中的random()函数来创建0-1之间的随机元素,
                            数组包含的元素数量由参数决定
# # # # # # # # # # # # # # # # # # # # # # # # # # (1)array函数
# 创建一维数组
array1=np.array([1,2,3])
# 创建二维数组,numpy会自动推断出适合的数据类型,所以一般不需要显示给定数据类型。
array2=np.array([[1.,2,3],[4,5,6]])
# 创建三维数组
array3=np.array([
 [[1,2,3],[4,5,6],[7,8,9]]
])
array31=np.array([
 [[1,2,3],[4,5,6],[7,8,9]],
 [[1,2,3],[4,5,6],[7,8,9]]
])
print("array1=")
print(array1)
print("array2=")
print(array2)
print("array3=")
print(array3)
print("array31=")
print(array31)
# 数组的纬度
print(array3.ndim)
# 数组的数据类型
print(array2.dtype)
print(array3.dtype)
# 数组的形状
print(array31.shape)
# 数组的大小:2*3*3=18。。。数组中元素的个数是各个纬度相乘
print(array31.size)
array1=
[1 2 3]
array2=
[[ 1.  2.  3.]
 [ 4.  5.  6.]]
array3=
[[[1 2 3]
  [4 5 6]
  [7 8 9]]]
array31=
[[[1 2 3]
  [4 5 6]
  [7 8 9]]

 [[1 2 3]
  [4 5 6]
  [7 8 9]]]
3
float64
int32
(2, 3, 3)
18
# # # # # # # # # # # # # # # # # # # # # # # # # # (2)zeros函数,传入指定形状:()或者[]
# 一维全0数组
a = np.zeros(4)
# 二维全0数组 
# ()
# zero23=np.zeros((2,3))
# []
zero23=np.zeros([2,3])
# 三维全0数组
zero33=np.zeros((3,3,3))
print(a)
# 数据类型为float
print(zero23.dtype)
print()
print(zero23)
print()
print(zero33)
​[ 0.  0.  0.  0.]
float64

[[ 0.  0.  0.]
 [ 0.  0.  0.]]

[[[ 0.  0.  0.]
  [ 0.  0.  0.]
  [ 0.  0.  0.]]

 [[ 0.  0.  0.]
  [ 0.  0.  0.]
  [ 0.  0.  0.]]

 [[ 0.  0.  0.]
  [ 0.  0.  0.]
  [ 0.  0.  0.]]]
# # # # # # # # # # # # # # # # # # # # # # # # # # (3)ones函数
# 一维全1数组
one=np.ones(3)
# 二维全1数组
one2=np.ones((2,3))
# 三维全1数组
one3=np.ones((2,3,1))
print(one2.dtype)
print(one)
print()
print(one2)
print()
print(one3)
float64
[ 1.  1.  1.]

[[ 1.  1.  1.]
 [ 1.  1.  1.]]

[[[ 1.]
  [ 1.]
  [ 1.]]

 [[ 1.]
  [ 1.]
  [ 1.]]]
# # # # # # # # # # # # # # # # # # # # # # # # # # (4)empty函数
# 未经初始化的垃圾值,本身不具任何意义,某些情况下近似0或1,用于数据清洗
em=np.empty(2)
em1=np.empty((2,2))
em2=np.empty((1,2,3))
print(em)
print(em1)
print(em2)
[  3.35964639e-322   1.48219694e-323]
[[  1.95570891e-316   3.21450328e+164]
 [  1.85692977e+216   1.99392236e-077]]
[[[ 1.  1.  1.]
  [ 1.  1.  1.]]]
# # # # # # # # # # # # # # # # # (5)arange函数:左闭又开,步长可以为负值,只能生成一维数组。
a=np.arange(1,10,2)
a1=np.arange(20,10,-1)
print(a)
print(a1)
[1 3 5 7 9]
[20 19 18 17 16 15 14 13 12 11]
# # # # # # # # # # # # # # # #(6)linspace函数:全闭,起始值、终止值、数据个数,只能生成一维数组,等差数列。
# 第三个参数不能为负值
li=np.linspace(1,10,5)
li
# help(np.linspace)
array([  1.  ,   3.25,   5.5 ,   7.75,  10.  ])
# # # # # # # # # # # # # # # # # # # # # # # # # # (7)logspace函数
# 全闭区间,等比数列,起始值(默认以10为底n次方)、终止值(默认以10为底n次方)、数据个数
log=np.logspace(0,2,5)
log1=np.logspace(0,2,5,base=2)
print(log)
print(log1)
# 调用帮助文档
# help(np.logspace)
[   1.            3.16227766   10.           31.6227766   100.        ]
[ 1.          1.41421356  2.          2.82842712  4.        ]
np.random.random((3,4))
array([[ 0.73495815,  0.188092  ,  0.41276153,  0.61328373],
       [ 0.99594318,  0.86817447,  0.87454703,  0.1088725 ],
       [ 0.44088542,  0.01364751,  0.10338386,  0.13286202]])

二、ndarray 的属性、数据类型

1、ndarray

(1)ndim 数组轴(维度)的个数,轴的个数被称作秩

(2)shape 数组的维度, 例如一个2排3列的矩阵,它的shape属性将是(2,3),这个元组的长度显然是秩,即维度或者ndim属性

(3)size 数组元素的总个数,等于shape属性中元组元素的乘积。

(4)dtype 一个用来描述数组中元素类型的对象,可以通过创造或指定dtype使用标准Python类型。不过NumPy提供它自己的数据类型。

(5)itemsize 数组中每个元素的字节大小。例如,一个元素类型为float64的数组itemsiz属性值为8(=64/8),又如,一个元素类型为complex32的数组item属性为4(=32/8).

2、数据类型

(1)创建numpy数组的时候可以通过属性dtype显示指定数据类型,如果不指定的情况下,numpy会自动推断出适合的数据类型, 所以一般不需要显示给定数据类型。

(2)如果需要更改一个已经存在的数组的数据类型,可以通过astype方法进行修改从而得到一个新数组。

#定义一个2*3*3*2的四维数组,分别求其纬度、元素个数、数据类型、元素的字节大小,并改变其形状
arr=np.array([
 [
 [[1,2],[42,51],[75,88]],
 [[11,23],[44,85],[97,80]],
 [[1,2],[4,5],[7,8]]
 ],
 [
 [[13,25],[47,58],[79,81]],
 [[12,23],[44,55],[76,87]],
 [[19,20],[41,52],[73,84]]
 ]
])
# print(arr)
print()
# 数组的纬度
print(arr.ndim)
print()
# 数组的大小:2*3*3*2=36
print(arr.size)
print()
# 数据类型
print(arr.dtype)
print()
# 每个元素占有的字节数:4*8=32,是int32类型的,共占4个字节,每个字节8位,共32位。
print(arr.itemsize)
print()
​4

36

int32

4

[[[[ 1  2 42 51 75 88 11 23 44 85 97 80  1  2  4  5  7  8 13 25 47 58 79 81
    12 23 44 55 76 87 19 20 41 52 73 84]]]]
[[[[ 1  2 42 51 75 88 11 23 44]
   [85 97 80  1  2  4  5  7  8]]

  [[13 25 47 58 79 81 12 23 44]
   [55 76 87 19 20 41 52 73 84]]]]
# shape改变形状
# 改变其形状:2*3*3*2=i*j*k*l....如果为-1则让其自动扩展。
# 对于一个已经存在的ndarray数组对象而言,可以通过修改形状相关的参数/方法从而改变数组的形状。
#  直接修改数组ndarray的shape值, 要求修改后乘积不变。
#  直接使用reshape函数创建一个改变尺寸的新数组,原数组的shape保持不变,但是新数组和原数组共享一个内存空间,
# 也就是修改任何一个数组中的值都会对另外一个产生影响,另外要求新数组的元素个数和原数组一致。
#  当指定某一个轴为-1的时候,表示将根据数组元素的数量自动计算该轴的长度值。
print(arr.reshape(1,1,1,36))
print(arr.reshape(1,2,-1,9))
[[[[ 1  2 42 51 75 88 11 23 44 85 97 80  1  2  4  5  7  8 13 25 47 58 79 81
    12 23 44 55 76 87 19 20 41 52 73 84]]]]
[[[[ 1  2 42 51 75 88 11 23 44]
   [85 97 80  1  2  4  5  7  8]]

  [[13 25 47 58 79 81 12 23 44]
   [55 76 87 19 20 41 52 73 84]]]]
a=np.array(["python","C语言","java"])
print(a)
a.dtype
a1=np.array(["python","C","java"],dtype='S8')
print(a1.dtype)
['python' 'C语言' 'java']
|S8

三 ndarray 数据基本操作

(1)数组与标量、数组之间的运算

(2)数组的矩阵积(matrix product)

(3)数组的索引与切片

(4)数组的转置与轴对换

(5)通用函数:快速的元素级数组成函数

(6)聚合函数

(7)np.where函数

(8)np.unique函数

# (1)数组与标量的运算
arr1=np.random.random((2,3))
arr2=np.random.random((2,3))
arr3=np.random.random((3,2))
print(arr1)
# 加减乘除、乘方
print(arr1*2)
print()
print(arr1+2)
print()
print(arr1-2)
print()
print(arr1/2)
print()
print(arr1**2)
[[ 0.16151808  0.49733326  0.80467349]
 [ 0.00404521  0.64360116  0.11018511]]
[[ 0.32303616  0.99466652  1.60934697]
 [ 0.00809041  1.28720232  0.22037022]]

[[ 2.16151808  2.49733326  2.80467349]
 [ 2.00404521  2.64360116  2.11018511]]

[[-1.83848192 -1.50266674 -1.19532651]
 [-1.99595479 -1.35639884 -1.88981489]]

[[ 0.08075904  0.24866663  0.40233674]
 [ 0.0020226   0.32180058  0.05509256]]

[[  2.60880898e-02   2.47340373e-01   6.47499419e-01]
 [  1.63636930e-05   4.14222454e-01   1.21407585e-02]]
# (2)数组与数组的运算
# 加减乘除、乘方、数组的矩阵积
# 
# 两个二维矩阵(行和列的矩阵)满足第一个矩阵的列数与第二个矩阵的行数相同,
# 那么可以进行矩阵的乘法,即矩阵积,矩阵积不是元素级的运算。也称为点积、数量积。
print(arr1+arr2)
print()
print(arr1-arr2)
print()
print(arr1*arr2)
print()
print(arr1/arr2)
print()
print(arr1**arr2)
print()
print(arr1.dot(arr3))
[[ 0.6315819   1.04947786  1.40931855]
 [ 0.09635275  1.48953681  0.82396153]]

[[-0.30854574 -0.05481134  0.20002843]
 [-0.08826233 -0.20233449 -0.60359131]]

[[  7.59238050e-02   2.74599875e-01   4.86541848e-01]
 [  3.73403030e-04   5.44445166e-01   7.86475334e-02]]

[[ 0.34360883  0.9007301   1.33081958]
 [ 0.04382314  0.76081574  0.15436922]]

[[ 0.42443717  0.67999475  0.87686637]
 [ 0.60131575  0.68881428  0.20715238]]

[[ 1.23292451  1.23806854]
 [ 0.60883817  0.55746147]]
# (3)数组的索引与切片
# 定义一个3*3*3的数组
arr3=np.array([
 [[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]]
])
# 索引
print(arr3)
print("# # # # # # #arr3[0]# # # # # # # # # # # # # # ")
print(arr3[0])
print("# # # # # # #arr3[1] # # # # # # # # # # # # # ")
print(arr3[1])
print("# # # # # # # arr3[2] # # # # # # # # # # # # # # ")
print(arr3[2])
print("# # # # # # # arr3[0][0] # # # # # # # # # # # # # # ")
print(arr3[0][0])
print("# # # # # # # arr3[0][1] # # # # # # # # # # # # # # ")
print(arr3[0][1])
print("# # # # # # # arr3[0][2]# # # # # # # # # # # # # # ")
print(arr3[0][2])
print("# # # # # # # arr3[0][2][0] # # # # # # # # # # # # # # ")
print(arr3[0][2][0])
print("# # # # # # # arr3[0][2][1]# # # # # # # # # # # # # # ")
print(arr3[0][2][1])
print("# # # # # # # arr3[0][2][2]# # # # # # # # # # # # # # ")
print(arr3[0][2][2])
# 切片,,,在各维度上单独切片,如果纬度都保留,则使用冒号,不指定起始值
print("# # # # # # # arr3[0,:,0:2]# # # # # # # # # # # # # # ")
print(arr3[0,:,0:2])
print("# # # # # # # arr3[1,:,0:2]# # # # # # # # # # # # # # ")
print(arr3[1,:,0:2])
print("# # # # # # # arr3[2,:,0:2]# # # # # # # # # # # # # # ")
print(arr3[2,:,0:2])
print("# # # # # # # arr3[:,:,0:2]# # # # # # # # # # # # # # ")
print(arr3[:,:,0:2])
print("# # # # # # # arr3[:,0,0:2]# # # # # # # # # # # # # # ")
print(arr3[:,0,0:2])
print("# # # # # # # arr3[:,1,0:2]# # # # # # # # # # # # # # ")
print(arr3[:,1,0:2])
print("# # # # # # # arr3[:,2,0:2]# # # # # # # # # # # # # # ")
print(arr3[:,2,0:2])
print(arr3[1,:,0:2])
[[[ 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]]]
# # # # # # #arr3[0]# # # # # # # # # # # # # # 
[[1 2 3]
 [4 5 6]
 [7 8 9]]
# # # # # # #arr3[1] # # # # # # # # # # # # # 
[[10 11 12]
 [13 14 15]
 [16 17 18]]
# # # # # # # arr3[2] # # # # # # # # # # # # # # 
[[19 20 21]
 [22 23 24]
 [25 26 27]]
# # # # # # # arr3[0][0] # # # # # # # # # # # # # # 
[1 2 3]
# # # # # # # arr3[0][1] # # # # # # # # # # # # # # 
[4 5 6]
# # # # # # # arr3[0][2]# # # # # # # # # # # # # # 
[7 8 9]
# # # # # # # arr3[0][2][0] # # # # # # # # # # # # # # 
7
# # # # # # # arr3[0][2][1]# # # # # # # # # # # # # # 
8
# # # # # # # arr3[0][2][2]# # # # # # # # # # # # # # 
9
# # # # # # # arr3[0,:,0:2]# # # # # # # # # # # # # # 
[[1 2]
 [4 5]
 [7 8]]
# # # # # # # arr3[1,:,0:2]# # # # # # # # # # # # # # 
[[10 11]
 [13 14]
 [16 17]]
# # # # # # # arr3[2,:,0:2]# # # # # # # # # # # # # # 
[[19 20]
 [22 23]
 [25 26]]
# # # # # # # arr3[:,:,0:2]# # # # # # # # # # # # # # 
[[[ 1  2]
  [ 4  5]
  [ 7  8]]

 [[10 11]
  [13 14]
  [16 17]]

 [[19 20]
  [22 23]
  [25 26]]]
# # # # # # # arr3[:,0,0:2]# # # # # # # # # # # # # # 
[[ 1  2]
 [10 11]
 [19 20]]
# # # # # # # arr3[:,1,0:2]# # # # # # # # # # # # # # 
[[ 4  5]
 [13 14]
 [22 23]]
# # # # # # # arr3[:,2,0:2]# # # # # # # # # # # # # # 
[[ 7  8]
 [16 17]
 [25 26]]
[[10 11]
 [13 14]
 [16 17]]
# ndarray-布尔类型索引
#  利用布尔类型的数组进行数据索引,最终返回的结果是对应索引数组中数据为True位置的值。
# numpy中不能使用Python中and、or、not,使用&(与)、|(或)、~(非)
arr6=np.random.random((3,4))
print(arr6)
print("# # # # # # ## #arr6>0.5得到的布尔值,为真则取该位置的值,否则就舍去 # # # # # # # # # ")
# A=arr6<0.5
A=arr6>0.5
print(A)
print("# # # # # # ## # # # # # #将对应的布尔值转换为一维数组 # # # # # # # # # # # # # # ## # ")
# 装换成一维数组
arr7=arr6[A]
print(arr7)
print(arr7.shape)
[[ 0.86896591  0.41817603  0.16548528  0.17678985]
 [ 0.59362701  0.82682412  0.77264831  0.94374459]
 [ 0.59965083  0.62261208  0.70067074  0.03569759]]
# # # # # # ## #arr6>0.5得到的布尔值,为真则取该位置的值,否则就舍去 # # # # # # # # # 
[[ True False False False]
 [ True  True  True  True]
 [ True  True  True False]]
# # # # # # ## # # # # # #将对应的布尔值转换为一维数组 # # # # # # # # # # # # # # ## # 
[ 0.86896591  0.59362701  0.82682412  0.77264831  0.94374459  0.59965083
  0.62261208  0.70067074]
(8,)
# 利用布尔值进行索引的一个应用实例
names=np.array(['Gerry','Tom','John'])
scores=np.array([
 [98,87,86,95],
 [48,84,84,45],
 [58,7,81,95]
])
class1=np.array(['语文','数学','英语','科学'])
print("Gerry score is:",scores[names=='Gerry'].reshape((-1)))
print("Gerry score is:",scores[names=='Gerry'].reshape((-1))[class1=='数学'])
print("Gerry和Tom的成绩")
print(scores[(names=='Gerry')|(names=='Tom')])
print("非Gerry和Tom的成绩")
print(scores[(names!='Gerry')&(names!='Tom')])
print("成绩大于90的全部输出")
print(scores[scores>90])
print("John成绩大于90的全部输出")
print(scores[names=="John"][scores[names=="John"]>90])
Gerry score is: [98 87 86 95]
Gerry score is: [87]
Gerry和Tom的成绩
[[98 87 86 95]
 [48 84 84 45]]
非Gerry和Tom的成绩
[[58  7 81 95]]
成绩大于90的全部输出
[98 95 95]
John成绩大于90的全部输出
[95]
# ndarray-花式索引:指的是利用整数数组进行索引的方式。
arr7=np.arange(40).reshape(5,8)
print(arr7)
print("获取第0、3、5行的数据")
print(arr7[[0,2,4]])
print("获取第(0,0)、(3,0)、(4,2)的数据")
print(arr7[[0,3,4],[0,0,2]])
print("获取第0、3、5行的第0、2、3列数据")
print(arr7[[0,3,4]])
print("##################")
print(arr7[[0,3,4]].T)
print("##################")
print(arr7[[0,3,4]].T[[0,1,2]])
print("##################")
print(arr7[[0,3,4]].T[[0,1,2]].T)
print("ix_会产生一个索引器")
print(arr7[np.ix_([0,3,4],[0,1,2])])
[[ 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]
 [32 33 34 35 36 37 38 39]]
获取第0、3、5行的数据
[[ 0  1  2  3  4  5  6  7]
 [16 17 18 19 20 21 22 23]
 [32 33 34 35 36 37 38 39]]
获取第(0,0)、(3,0)、(4,2)的数据
[ 0 24 34]
获取第0、3、5行的第0、2、3列数据
[[ 0  1  2  3  4  5  6  7]
 [24 25 26 27 28 29 30 31]
 [32 33 34 35 36 37 38 39]]
##################
[[ 0 24 32]
 [ 1 25 33]
 [ 2 26 34]
 [ 3 27 35]
 [ 4 28 36]
 [ 5 29 37]
 [ 6 30 38]
 [ 7 31 39]]
##################
[[ 0 24 32]
 [ 1 25 33]
 [ 2 26 34]]
##################
[[ 0  1  2]
 [24 25 26]
 [32 33 34]]
ix_会产生一个索引器
[[ 0  1  2]
 [24 25 26]
 [32 33 34]]
# ndarray-数组转置与轴对换
# 数组转置是指将shape进行重置操作,并将其值重置为原始shape元组的倒置,
# 比如原始的shape值为:(2,3,4),那么转置后的新元组的shape的值为: (4,3,2)f
# 可以通过调用数组的transpose函数或者T属性进行数组转置操作
arr=np.random.random(30).reshape(3,5,2)
print(arr)
print("#############################################")
arr1=arr.T
print(arr1)
print("#############################################")
arr2=np.transpose(arr1)
print(arr2)
[[[ 0.00402807  0.59492165]
  [ 0.73440429  0.46736769]
  [ 0.49226215  0.89787107]
  [ 0.73445678  0.44300247]
  [ 0.31241367  0.41492043]]

 [[ 0.62619988  0.98842667]
  [ 0.27157861  0.94330261]
  [ 0.67042726  0.80008779]
  [ 0.71326917  0.84763842]
  [ 0.99978859  0.77586272]]

 [[ 0.88487653  0.52094887]
  [ 0.05950485  0.61307   ]
  [ 0.29450318  0.52396259]
  [ 0.09521307  0.26146112]
  [ 0.45307467  0.29686353]]]
#############################################
[[[ 0.00402807  0.62619988  0.88487653]
  [ 0.73440429  0.27157861  0.05950485]
  [ 0.49226215  0.67042726  0.29450318]
  [ 0.73445678  0.71326917  0.09521307]
  [ 0.31241367  0.99978859  0.45307467]]

 [[ 0.59492165  0.98842667  0.52094887]
  [ 0.46736769  0.94330261  0.61307   ]
  [ 0.89787107  0.80008779  0.52396259]
  [ 0.44300247  0.84763842  0.26146112]
  [ 0.41492043  0.77586272  0.29686353]]]
#############################################
[[[ 0.00402807  0.59492165]
  [ 0.73440429  0.46736769]
  [ 0.49226215  0.89787107]
  [ 0.73445678  0.44300247]
  [ 0.31241367  0.41492043]]

 [[ 0.62619988  0.98842667]
  [ 0.27157861  0.94330261]
  [ 0.67042726  0.80008779]
  [ 0.71326917  0.84763842]
  [ 0.99978859  0.77586272]]

 [[ 0.88487653  0.52094887]
  [ 0.05950485  0.61307   ]
  [ 0.29450318  0.52396259]
  [ 0.09521307  0.26146112]
  [ 0.45307467  0.29686353]]]

ndarray-通用函数/常用函数

 numpy模块中对ndarray中数据进行快速元素级运算的函数,也可以看做是简单的函数(接受一个或多个标量值,并产生一个或多个标量值)的矢量化包装器。主要包括一元函数和二元函数。
# 一元函数
arr3=np.array([
 [1,2,-3],
 [0.1,0.6,-0.4]
])
print(arr3)
print("#############################################")
# abs fabs计算绝对值
print(np.abs(arr3))
print("#############################################")
# sqrt 计算各元素的平方根
print(np.sqrt(abs(arr3)))
print("#############################################")
# square计算各元素的评分:arr3**2
print(np.square(arr3))
print("#############################################")
# exp计算各元素指数e的x次方
print(np.exp(arr3))
print("#############################################")
# log2、log10分别计算底数为10、2的log值,以及log(1+x)
print(np.log10(abs(arr3)))
print(np.log2(abs(arr3)))
print(np.log1p(abs(arr3)))
print("#############################################")
# sign计算各个元素的正负号,1:正号  0:0  -1:负号
print(np.sign(arr3))
print("#############################################")
# ceil 计算各个元素的ceil值,大于等于该值的最小整数
print(np.ceil(arr3))
print("#############################################")
# floor 计算各个元素的floor的值,小于等于该值的最大整数
print(np.floor(arr3))
print("#############################################")
# rint 将各个元素的四书五入到最接近的整数
print(np.rint(arr3))
print("#############################################")
# modf 将数组中元素的小数位和整数位以两部分独立数组的形式返回
print(np.modf(arr3))
print("#############################################")
# isnan 返回一个表示“那些值是NaN(不是一个数字)”的布尔类型数组
print(np.isnan(arr3))  
print("#############################################")
# isfinite、isinf  分别一个表示”那些元素是有穷的(非inf、非NaN)”或者“那些元素是无穷的”的布尔型数组
print(np.isfinite(arr3))  
print(np.isinf(arr3))
print("#############################################")
# cos、cosh、sin、sinh、tan、tanh   普通以及双曲型三角函数
print(np.tan(arr3))
print("#############################################")
# arccos、arccosh、arcsin、arcsinh、arctan、arctanh 反三角函数
print(np.arctan(arr3))
[[ 1.   2.  -3. ]
 [ 0.1  0.6 -0.4]]
#############################################
[[ 1.   2.   3. ]
 [ 0.1  0.6  0.4]]
#############################################
[[ 1.          1.41421356  1.73205081]
 [ 0.31622777  0.77459667  0.63245553]]
#############################################
[[ 1.    4.    9.  ]
 [ 0.01  0.36  0.16]]
#############################################
[[ 2.71828183  7.3890561   0.04978707]
 [ 1.10517092  1.8221188   0.67032005]]
#############################################
[[ 0.          0.30103     0.47712125]
 [-1.         -0.22184875 -0.39794001]]
[[ 0.          1.          1.5849625 ]
 [-3.32192809 -0.73696559 -1.32192809]]
[[ 0.69314718  1.09861229  1.38629436]
 [ 0.09531018  0.47000363  0.33647224]]
#############################################
[[ 1.  1. -1.]
 [ 1.  1. -1.]]
#############################################
[[ 1.  2. -3.]
 [ 1.  1. -0.]]
#############################################
[[ 1.  2. -3.]
 [ 0.  0. -1.]]
#############################################
[[ 1.  2. -3.]
 [ 0.  1. -0.]]
#############################################
(array([[ 0. ,  0. , -0. ],
       [ 0.1,  0.6, -0.4]]), array([[ 1.,  2., -3.],
       [ 0.,  0., -0.]]))
#############################################
[[False False False]
 [False False False]]
#############################################
[[ True  True  True]
 [ True  True  True]]
[[False False False]
 [False False False]]
#############################################
[[ 1.55740772 -2.18503986  0.14254654]
 [ 0.10033467  0.68413681 -0.42279322]]
#############################################
[[ 0.78539816  1.10714872 -1.24904577]
 [ 0.09966865  0.5404195  -0.38050638]]
# 二元函数
arr4=np.array([
 [1,0,-3],
 [0.1,0.6,-0.4]
])
arr5=np.array([
 [2,-5,8],
 [-0.1,-0.6,0.4],
])
arr6=np.array([
 [2,-5,8],
 [-0.1,-0.6,0.4],
 [-0.1,-0.6,0.4]
])
print("#############################################")
# mod 取模运算,做除法运算之后的余数
print(np.mod(arr4,arr5))
print("#############################################")
# dot 求两个数组的点积
print(np.dot(arr4,arr6))
print("#############################################")
# greater(大于)、greater_equal(大于等于)、less(小于)、less_equal(小于等于)、equal(等于)、not_equal(不等于)
# 执行元素级别的比较运算,最终返回一个布尔型数组
print(np.greater(arr4,arr5))
print("#############################################")
# logical_and、logical_or、logical_xor
# 执行元素级别的布尔逻辑运算,相当于中缀运算符&、|、^
print(np.logical_and(arr4,arr5))
print(np.logical_xor(arr4,arr5))
print("#############################################")
# power 求解对数组中的每个元素进行给定次数的指数值,类似于: arr ** 3
print(np.power(arr3,4))
#############################################
[[ 1. -0.  5.]
 [-0. -0.  0.]]
#############################################
[[ 2.3  -3.2   6.8 ]
 [ 0.18 -0.62  0.88]]
#############################################
[[False  True False]
 [ True  True False]]
#############################################
[[ True False  True]
 [ True  True  True]]
[[False  True False]
 [False False False]]
#############################################
[[  1.00000000e+00   1.60000000e+01   8.10000000e+01]
 [  1.00000000e-04   1.29600000e-01   2.56000000e-02]]
# ndarray-聚合函数
# 聚合函数是对一组值(eg一个数组)进行操作,返回一个单一值作为结果的函数。
# 当然聚合函数也可以指定对某个具体的轴进行数据聚合操作;
# 常将的聚合操作有:平均值mean、最大值max、最小值min、方差std等等
arr7=np.array([
 [2,-5,8],
 [-0.1,-0.6,0.4],
 [-0.1,-0.6,0.4]
])
print(np.mean(arr7))
print(np.max(arr7))
print(np.min(arr7))
print(np.std(arr7))
0.488888888889
8.0
-5.0
3.19563745838
# np.where函数
# np.where函数是三元表达式x if condition else y的矢量化版本
arr8=np.array([2,7,8])
arr9=np.array([-0.1,-0.6,0.4])
condition=arr8>arr9
result=np.where(condition,arr8,arr9)
print(result)
[ 2.  7.  8.]
# np.unique函数
# np.unique函数的主要作用是将数组中的元素进行去重操作(也就是只保存不重复的数据)
arr10=np.array(["Python","Python","java"])
print(arr10)
print(np.unique(arr10))
['Python' 'Python' 'java']
['Python' 'java']
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值