numpy03

对数组进行切片,b=a[2:5],修改b或a,另一个值也同时被修改。若想单纯复制,使用 b=a[2:5].copy()

a = np.arange(0,10)
b = a[2:5]
print(b)
a[3] = 90
print(b)
[2 3 4]
[ 2 90  4]

bull索引
将字符与数组对应,每一个名字可对应以行数组。~可用于取反,多个条件bull索引用 & 与 | 。

names = np.array(["bob","tom","bob","tom","sara"])
data = np.random.randn(5,3)
print(names)
print(data)
print(names =="bob")
print(data[names =="bob"])
print("****")
print(data[names!="bob"])
print("****")
print(data[~(names == "bob")])
print("****")
#使用多个布尔索引条件
a = (names=="bob")|(names=="tom")
print(data[~a])
['bob' 'tom' 'bob' 'tom' 'sara']
[[ 0.69525348  0.43568252 -0.8931784 ]
 [ 2.19749435 -1.00551727  2.37792392]
 [-0.73734587 -1.34906414  0.63287713]
 [-0.23651394  0.41413966  0.44997678]
 [ 0.2194617   0.84753193  1.64428126]]
[ True False  True False False]
[[ 0.69525348  0.43568252 -0.8931784 ]
 [-0.73734587 -1.34906414  0.63287713]]
****
[[ 2.19749435 -1.00551727  2.37792392]
 [-0.23651394  0.41413966  0.44997678]
 [ 0.2194617   0.84753193  1.64428126]]
****
[[ 2.19749435 -1.00551727  2.37792392]
 [-0.23651394  0.41413966  0.44997678]
 [ 0.2194617   0.84753193  1.64428126]]
****
[[0.2194617  0.84753193 1.64428126]]

转置
使用transpose会输出内存地址,swapaxes(0,1)表示使0,1轴互换

a=np.arange(6).reshape(2,3)
print(a)
print(a.T)
print(a.swapaxes(0,1))

通用函数
快速对每个元素进行操作

a = np.random.randn(2,8)
print(a)
#分别将数组的小数部分和整数部分以元组形式返回
print(np.modf(a))
#判定元素是否为空值
print(np.isnan(a))
#计算每个元素的符号值,1(正数),-1(负数),0
print(np.sign(a))
#计算每个元素的最高整数值、最小整数值
print(np.ceil(a))
print(np.floor(a))
[[-0.32992668 -0.92254005  1.03905157  0.39772345  0.27822769  0.13943396
  -0.1728214  -1.48062659]
 [ 2.64602861 -1.09963284 -2.21213521  1.57469212  0.70439034 -0.17716698
  -0.83665894  0.71143324]]
(array([[-0.32992668, -0.92254005,  0.03905157,  0.39772345,  0.27822769,
         0.13943396, -0.1728214 , -0.48062659],
       [ 0.64602861, -0.09963284, -0.21213521,  0.57469212,  0.70439034,
        -0.17716698, -0.83665894,  0.71143324]]), array([[-0., -0.,  1.,  0.,  0.,  0., -0., -1.],
       [ 2., -1., -2.,  1.,  0., -0., -0.,  0.]]))
[[False False False False False False False False]
 [False False False False False False False False]]
[[-1. -1.  1.  1.  1.  1. -1. -1.]
 [ 1. -1. -1.  1.  1. -1. -1.  1.]]
[[-0. -0.  2.  1.  1.  1. -0. -1.]
 [ 3. -1. -2.  2.  1. -0. -0.  1.]]
[[-1. -1.  1.  0.  0.  0. -1. -2.]
 [ 2. -2. -3.  1.  0. -1. -1.  0.]]
#大于0的个数
arr = np.random.randn(10)
print(arr)
print((arr>0).sum())
#sort函数排序,计算分位数方法
a = np.random.randn(1000)
b = np.sort(a)
c= b[int(len(a)*0.05)]
print(c)

seed
seed( ) 用于指定随机数生成时所用算法开始的整数值。
1.如果使用相同的seed( )值,则每次生成的随即数都相同;
2.如果不设置这个值,则系统根据时间来自己选择这个值,此时每次生成的随机数因时间差异而不同。
3.设置的seed()值仅一次有效

np.random.seed(10)
print(np.random.randn(10))
np.random.seed(10)
#若不添加上一行seed,则生成新的随机数
print(np.random.randn(10))
[ 1.3315865   0.71527897 -1.54540029 -0.00838385  0.62133597 -0.72008556
  0.26551159  0.10854853  0.00429143 -0.17460021]
[ 1.3315865   0.71527897 -1.54540029 -0.00838385  0.62133597 -0.72008556
  0.26551159  0.10854853  0.00429143 -0.17460021]

随机漫步

import random
import matplotlib.pyplot as plt
position = 0
walk = [position]
steps = 1000
for i in range(steps):
    step =1 if random.randint(0,1) else -1
    position += step
    walk.append(position)
    plt.plot(walk[:100])
plt.show()
import matplotlib.pyplot as plt
import numpy as np
nsteps = 1000
draws = np.random.randint(0,2,size = nsteps)
steps = np.where(draws>0,1,-1)
walk = steps.cumsum()
plt.plot(walk)
plt.show()

where使用

xx = np.array([1,1,1,1])
yy = np.array([2,2,3,4])
zz =np.array([True,False,False,True])
result = [(x if c else y) for x,c,y in zip(xx,yy,zz)]
print(result)
re1 = np.where(zz,xx,yy)
print(re1)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值