Python----numpy(持续更新。。。)

np.where():

  • 返回的是满足where的条件的元素的索引.
  • 是一个元素:  (x坐标, y坐标)

 

stack(), hstack(), vstack():

  • stack(): 按给定轴的方向进行拼接,  轴的维度不同可能导致"转置"

  • 例一
import numpy as np
a=[[1,2,3],
   [4,5,6]]
print("列表a如下:")
print(a)
 
print("axis=0")
c=np.stack(a,axis=0)
print(c)
 
print("axis=1")
c=np.stack(a,axis=1)
print(c)
 

  • 例二 
import numpy as np
a=[[1,2,3,4],
   [5,6,7,8],
   [9,10,11,12]]
print("列表a如下:")
print(a)
 
print("axis=0")
c=np.stack(a,axis=0)
print(c)
 
print("axis=1")
c=np.stack(a,axis=1)
print(c)
 

 

  • hstack(): 按水平方向拼接----(其实就是, 你将这个矩阵画出来, 横着拼, 竖着拼一目了然)

import numpy as np
a=[1,2,3]
b=[4,5,6]
print(np.hstack((a,b)))
 

import numpy as np
a=[[1],[2],[3]]
b=[[4],[5],[6]]
print(np.hstack((a,b)))

 

  • vstack(): 按垂直方向拼接----但是, 你心里要清楚拼接的单位是什么

import numpy as np
a=[1,2,3]
b=[4,5,6]
print(np.vstack((a,b)))

import numpy as np
a=[[1],[2],[3]]
b=[[4],[5],[6]]
print(np.vstack((a,b)))

 

 





python list[-1]: 取最后一个元素

 

np.random.shuffle(x)与np.random.permutation(x):

  • 将数组打乱随机排列 两种方法
  • np.random.shuffle(x):在原数组上进行,改变自身序列,无返回值。
  • np.random.permutation(x):不在原数组上进行,返回新的数组,不改变自身数组。

 

 

返回满足条件元素的索引:

  • np.argwhere( a ) :  a----条件

 

 

Python中reshape函数参数-1的意思:

  • 就是自己懒得算, 自动补那个维度的大小
  • 对于维度:  (x, y, z)三维, (x, y)二维
  • 初始维度:
z = np.array([[1, 2, 3, 4],
          [5, 6, 7, 8],
          [9, 10, 11, 12],
          [13, 14, 15, 16]])
z.shape
(4, 4)
  • z.reshape(-1): 只有一个维度
z.reshape(-1)
array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16])
  • z.reshape(-1, 1):  有两个维度. 第一个维度大小为1, 另外一个维度自己算
z.reshape(-1,1)
 array([[ 1],
        [ 2],
        [ 3],
        [ 4],
        [ 5],
        [ 6],
        [ 7],
        [ 8],
        [ 9],
        [10],
        [11],
        [12],
        [13],
        [14],
        [15],
        [16]])
  •  z.reshape(-1, 2):  有两个维度, 第二个维度为2, 第一个自己算
z.reshape(-1, 2)
 array([[ 1,  2],
        [ 3,  4],
        [ 5,  6],
        [ 7,  8],
        [ 9, 10],
        [11, 12],
        [13, 14],
        [15, 16]])

 

np.max与np.maximum的区别:

#维度上的最大值:
np.max(a, axis=None, out=None, keepdims=False)


#传入两个x,y并逐位比较取最大值:
np.maximum(x, y, out=None)

 

numpy——.npy和.npz文件

  • npy文件——Numpy专用的二进制格式

    • np.load()和np.save()
    • 数组会以未压缩的原始二进制格式保存在扩展名为.npy的文件中
    • 保存为.npy文件后如果使用记事本等工具打开浏览会出现乱码
    • 够浏览内容的话建议不要使用.npy文件
import numpy as np

# 将数组以二进制格式保存到磁盘
arr=np.arange(5)
np.save('test',arr)
# 读取数组
print(np.load('test.npy'))

 

  • npz文件——压缩文件

    • np.savez()函数可以将多个数组保存到同一个文件
    • np.savez()函数的第一个参数是文件名,其后的参数都是需要保存的数组
    • np.savez()函数输出的是一个扩展名为.npz的压缩文件,它包含多个与保存的数组对应的npy文件(由save()函数保存),文件名对应数组名
    • 读取.npz文件时使用np.load()函数,返回的是一个类似于字典的对象,因此可以通过数组名作为关键字对多个数组进行访问
import numpy as np

# 将多个数组保存到磁盘
a = np.arange(5)
b = np.arange(6)
c = np.arange(7)
np.savez('test', a, b, c_array=c)  # c_array是数组c的命名
# 读取数组
data = np.load('test.npz')  #类似于字典{‘arr_0’:a,’arr_1’:b,’c_array’:c}
print('arr_0 : ', data['arr_0'])
print('arr_1 : ', data['arr_1'])
print('c_array : ', data['c_array'])

--------------------------------------------------------------------------------
arr_0 :  [0 1 2 3 4]
arr_1 :  [0 1 2 3 4 5]
c_array :  [0 1 2 3 4 5 6]

参考博文:https://www.cnblogs.com/Lilu-1226/p/9768368.html

 

 






 

np.isinf():

  • 作用:测试元素是正无穷还是负无穷
  • 返回:布尔值(如果是正无穷或负无穷就返回true,否则返回false)

 

 

np.random.choice:  

自己想要探究以概率p进行选择会有多大的变化,

import numpy as np

a1 = np.random.choice(a=5, size=3, replace=False, p=[0.1, 0.2, 0.25, 0.05, 0.4])

print(a1)



a2 = np.random.choice(a=5, size=3, replace=False, p=[0.1, 0.2, 0.25, 0.05, 0.4])

print(a2)


a3 = np.random.choice(a=5, size=3, replace=False, p=[0.1, 0.2, 0.25, 0.05, 0.4])

print(a3)

事实发现, 变化还是挺大的

 

 

 

Guess you like

Origin blog.csdn.net/weiwei935707936/article/details/109528388