import numpy as np
arr = np.arange(15).reshape((3,5))
arr
array([[ 0, 1, 2, 3, 4], [ 5, 6, 7, 8, 9], [10, 11, 12, 13, 14]])
arr.transpose()
array([[ 0, 5, 10], [ 1, 6, 11], [ 2, 7, 12], [ 3, 8, 13], [ 4, 9, 14]])
arr.T
array([[ 0, 5, 10], [ 1, 6, 11], [ 2, 7, 12], [ 3, 8, 13], [ 4, 9, 14]])
arr = np.random.randn(4,3)
arr
array([[ 1.24971097, -1.15270121, 1.41855366], [-1.21579815, 0.67722079, -0.63992388], [-1.14607563, 0.59604011, 1.46181227], [ 0.39345074, 1.47096921, 0.55652236]])
np.dot(arr.T,arr)
array([[ 4.50823549, -2.36826025, 1.09441706], [-2.36826025, 4.3063623 , -0.37861226], [ 1.09441706, -0.37861226, 4.86840931]])
arr = np.arange(16).reshape((2,2,4))
arr
array([[[ 0, 1, 2, 3], [ 4, 5, 6, 7]], [[ 8, 9, 10, 11], [12, 13, 14, 15]]])
arr.transpose((1,0,2))
array([[[ 0, 1, 2, 3], [ 8, 9, 10, 11]], [[ 4, 5, 6, 7], [12, 13, 14, 15]]])
arr
array([[[ 0, 1, 2, 3], [ 4, 5, 6, 7]], [[ 8, 9, 10, 11], [12, 13, 14, 15]]])
arr.swapaxes(1,2)
array([[[ 0, 4], [ 1, 5], [ 2, 6], [ 3, 7]], [[ 8, 12], [ 9, 13], [10, 14], [11, 15]]])
arr = np.arange(10)
arr
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
np.sqrt(arr)
array([0. , 1. , 1.41421356, 1.73205081, 2. , 2.23606798, 2.44948974, 2.64575131, 2.82842712, 3. ])
np.exp(arr)
array([1.00000000e+00, 2.71828183e+00, 7.38905610e+00, 2.00855369e+01, 5.45981500e+01, 1.48413159e+02, 4.03428793e+02, 1.09663316e+03, 2.98095799e+03, 8.10308393e+03])
x = np.random.randn(8)
y = np.random.randn(8)
x
array([-1.7266767 , 1.2232217 , 0.13346529, 0.20789797, 0.05153854, -1.39971978, 0.11192313, 0.00818701])
y
array([-0.58431702, 1.18389044, 0.23911619, -0.20529655, -0.22218649, -0.23151421, -1.83659486, 0.91349072])
np.maximum(x,y)# 返回对应位置元素的较大值
array([-0.58431702, 1.2232217 , 0.23911619, 0.20789797, 0.05153854, -0.23151421, 0.11192313, 0.91349072])
arr = np.random.randn(7)*5
arr
array([ 2.11214818, 5.9728119 , -0.25401792, -10.69556551, -2.15374894, -0.32658578, -2.63945653])
remainder, whole_part = np.modf(arr)
remainder
array([ 0.11214818, 0.9728119 , -0.25401792, -0.69556551, -0.15374894, -0.32658578, -0.63945653])
whole_part
array([ 2., 5., -0., -10., -2., -0., -2.])
points = np.arange(-5,5,0.01)
xs,ys = np.meshgrid(points,points)
ys
array([[-5. , -5. , -5. , ..., -5. , -5. , -5. ], [-4.99, -4.99, -4.99, ..., -4.99, -4.99, -4.99], [-4.98, -4.98, -4.98, ..., -4.98, -4.98, -4.98], ..., [ 4.97, 4.97, 4.97, ..., 4.97, 4.97, 4.97], [ 4.98, 4.98, 4.98, ..., 4.98, 4.98, 4.98], [ 4.99, 4.99, 4.99, ..., 4.99, 4.99, 4.99]])
z = np.sqrt(xs**2 + ys**2)
z
array([[7.07106781, 7.06400028, 7.05693985, ..., 7.04988652, 7.05693985, 7.06400028], [7.06400028, 7.05692568, 7.04985815, ..., 7.04279774, 7.04985815, 7.05692568], [7.05693985, 7.04985815, 7.04278354, ..., 7.03571603, 7.04278354, 7.04985815], ..., [7.04988652, 7.04279774, 7.03571603, ..., 7.0286414 , 7.03571603, 7.04279774], [7.05693985, 7.04985815, 7.04278354, ..., 7.03571603, 7.04278354, 7.04985815], [7.06400028, 7.05692568, 7.04985815, ..., 7.04279774, 7.04985815, 7.05692568]])
import matplotlib.pyplot as plt
plt.imshow(z,cmap=plt.cm.gray)
plt.colorbar()
<matplotlib.colorbar.Colorbar at 0xbba33d0>
xarr = np.array([1.2,1.2,1.3,1.4,1.5])
yarr = np.array([2.1,2.2,2.3,2.4,2.5])
cond = np.array([True,False,True,True,False])
result = [(x if c else y) for x,y,c in zip(xarr, yarr, cond)]
result
[1.2, 2.2, 1.3, 1.4, 2.5]
# 使用where()改进
result = np.where(cond,xarr,yarr)
result
array([1.2, 2.2, 1.3, 1.4, 2.5])
arr = np.random.randn(4,4)
arr > 0
array([[False, False, False, False], [False, True, True, False], [ True, True, False, True], [ True, False, True, False]])
arr
array([[-0.02459259, -0.6428239 , -0.76112065, -2.14235712], [-0.10120677, 0.14290032, 0.56280688, -1.39125445], [ 0.39828175, 0.07024995, -1.22357901, 0.90811459], [ 0.83422951, -0.10858237, 0.90184316, -2.57063453]])
np.where(arr>0,2,-2)
array([[-2, -2, -2, -2], [-2, 2, 2, -2], [ 2, 2, -2, 2], [ 2, -2, 2, -2]])
np.where(arr>0,2,arr)
array([[-0.02459259, -0.6428239 , -0.76112065, -2.14235712], [-0.10120677, 2. , 2. , -1.39125445], [ 2. , 2. , -1.22357901, 2. ], [ 2. , -0.10858237, 2. , -2.57063453]])
arr = np.random.randn(5,4)
arr
array([[ 0.31996205, 0.69908917, 1.60390967, -0.41760093], [-0.36385331, -0.2618905 , 1.15295921, -0.10163846], [ 1.28356236, 0.45163684, 0.3690968 , -0.81384686], [ 0.14891047, 0.75320511, -1.49658404, 0.61913003], [ 0.0395804 , 0.97813093, 1.96525592, -1.07168954]])
arr.mean()
0.2928662657820542
np.mean(arr)
0.2928662657820542
arr.sum()
5.857325315641084
np.sum(arr)
5.857325315641084
arr.mean(axis=1)
array([0.55133999, 0.10639423, 0.32261228, 0.00616539, 0.47781943])
arr.sum(axis=0)
array([ 1.42816197, 2.62017154, 3.59463756, -1.78564575])
arr = np.arange(8)
arr
array([0, 1, 2, 3, 4, 5, 6, 7])
arr.cumsum()# 后一个元素值是其位置前面元素的和
array([ 0, 1, 3, 6, 10, 15, 21, 28], dtype=int32)
arr = np.arange(9).reshape(3,3)
arr
array([[0, 1, 2], [3, 4, 5], [6, 7, 8]])
arr.cumsum(axis=0)
array([[ 0, 1, 2], [ 3, 5, 7], [ 9, 12, 15]], dtype=int32)
arr = np.random.randn(100)
(arr > 0).sum()# 用于计算arr中大于零的值的个数
47
bools = np.array([True,False,True,True,False])
bools.any()
True
bools.all()
False
arr = np.random.randn(6)
arr
array([ 1.02405122, -0.6697276 , -0.21968547, -0.72406011, 0.1925428 , 0.07636505])
arr.sort()
arr
array([-0.72406011, -0.6697276 , -0.21968547, 0.07636505, 0.1925428 , 1.02405122])
arr = np.random.randn(5,3)
arr
array([[ 0.71087653, 0.07317549, -0.5169106 ], [-0.79285818, 0.2562815 , 0.52803003], [ 0.32807348, -0.15266984, -0.65285013], [-0.06786031, 2.69566713, -0.44730785], [ 0.42299494, 0.95989471, -0.51781003]])
arr.sort(axis=1)# 按行排序
arr
array([[-0.5169106 , 0.07317549, 0.71087653], [-0.79285818, 0.2562815 , 0.52803003], [-0.65285013, -0.15266984, 0.32807348], [-0.44730785, -0.06786031, 2.69566713], [-0.51781003, 0.42299494, 0.95989471]])
large_arr = np.random.randn(1000)
large_arr.sort()
large_arr[int(0.05*len(large_arr))]
-1.7547949961699647
names = np.array(['Bob','Joe','Will','Bob','Will','Joe','Joe'])
np.unique(names)
array(['Bob', 'Joe', 'Will'], dtype='<U4')
nums = np.array([1,2,3,2,6,4,5,4,10])
np.unique(nums)
array([ 1, 2, 3, 4, 5, 6, 10])
values = np.array([6,0,0,3,2,5,6])
np.in1d(values,[2,3,6])
array([ True, False, False, True, True, False, True])