numpy

NumPy的數組類被稱做ndarraypython

ndarry的建立:數組

建立一維數組:類型爲ndarrayless


array是一個相似ones的函數dom

import numpy as np

a=np.array([1,2,3])
print(a)
print(type(a))

 

結果:函數

[1 2 3]
<class 'numpy.ndarray'>學習

建立二維數組:ui

a=np.array([[1,2,3],[4,5,6]])
print(a)

 

結果:spa

[[1 2 3]
[4 5 6]]code

建立三維數組:對象

a=np.array([
    [[1,2,3],
     [4,5,6],
     [7,8,9]
     ],
    [
        [9,8,7],
        [6,5,4],
        [3,2,1]
    ]
])
print(a)

 

結果:

[[[1 2 3]
[4 5 6]
[7 8 9]]

[[9 8 7]
[6 5 4]
[3 2 1]]]

建立0數組:(3,2)表明二維數組,第一維有三個數組,第二維有二個

a=np.zeros((3,2))
print(a)

 

結果:

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

建立全1數組:

a=np.zeros((3,2,2))
print(a)

結果:

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

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

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

 

empty:調用和上一個同樣大小的矩陣,上一個3*3是全1下面的也是全1,上面的變全0下面的也是全0

arr_one=np.ones((3,3))
print('arr_one:')
print(arr_one)
arr=np.empty((3,3),dtype='i1')
print('arr:')
print(arr)
arr_zeros=np.zeros((3,3))
print('arr_zeros:')
print(arr_zeros)
arr3=np.empty((3,3),dtype='i1')
print(arr3)
print(arr3)

 

arr_one:
[[ 1. 1. 1.]
[ 1. 1. 1.]
[ 1. 1. 1.]]
arr:
[[1 1 1]
[1 1 1]
[1 1 1]]
arr_zeros:
[[ 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]]

 

arange函數: 相似python的range函數,經過指定開始值、終值和步長來建立一個一維數組,注意:最終建立的數組不包含終值

a=np.arange(20)
b=np.arange(1,20)
c=np.arange(10,20,2)
d=np.arange(20,15,-1)
print(a)
print(b)
print(c)
print(d)

 

結果:

[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]
[ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]
[10 12 14 16 18]
[20 19 18 17 16]

linspace函數:經過指定開始值、終值和元素個數來建立一個一維數組,數組的數據元素符合等差數列,

endpoint爲True表示包含最後的值,不然不包含,若是包含的話步長爲終值-初始值再除以個數-1,不包含就不用減1

retstep爲True顯示步長

arr=np.linspace(0,10,5,endpoint=False,retstep=True)
print(arr)
arr2=np.linspace(0,10,6)
print(arr2)
arr3=np.linspace(0,10,5,endpoint=True)
print(arr3)

(array([ 0., 2., 4., 6., 8.]), 2.0)
[ 0. 2. 4. 6. 8. 10.]
[ 0. 2.5 5. 7.5 10. ]

 

logspace函數:和linspace函數相似,不過建立的是等比數列數組,0和2表示10的0次方和10的2次方 能夠指定底數爲2

步長是終值除以初值再開個數的次方

能夠用來控制學習率,一開始很大後來很小

a=np.logspace(0,2,5)
b=np.logspace(0,2,5,base=2)
print(a)
print(b)

 

使用隨機數填充數組:即便用numpy.random中的random()函數來建立0-1之間的隨機元素,數組包含的元素數量由參數決定

random.rand()和它有相似的效果 這個和上面的用的少主要用來加噪音

random.randn()生成正太分佈的值,用來生成初始權重的值 這個和下面的用的比較多

random.randint():生成指定範圍整數形式

a=np.random.random((3,2,3))
print(a)
b=np.random.randint(0,9,size=([3,2,3]))
print(b)

 [[[ 0.16457832 0.62392568 0.12147039]

[ 0.93102204 0.94546256 0.89936897]]

[[ 0.76421283 0.76901106 0.85803104]
[ 0.78047088 0.12490645 0.20241544]]

[[ 0.81234778 0.1706378 0.46777206]
[ 0.46362101 0.65915849 0.81233809]]]

 

[[[1 7 2]
[0 3 2]]

[[4 8 3]
[2 2 1]]

[[4 5 8]
[3 5 6]]]

ndarray對象屬性:

shape: 數組的維度, 例如一個2排3列的矩陣,它的shape屬性將是(2,3),這個元組的長度顯然是秩,即維度或者ndim屬性

size :數組元素的總個數,等於shape屬性中元組元素的乘積

dtype: 一個用來描述數組中元素類型的對象

itemsize: 數組中每一個元素的字節大小

ndim:維數

a=np.random.random((3,2,3))
print(a)
print(a.shape)
print(a.size)
print(a.dtype)
print(a.ndim)
 

結果:

[[[ 0.69687113 0.64635635 0.33509638]
[ 0.89577043 0.52402303 0.14022035]]

[[ 0.75843167 0.97081013 0.27377149]
[ 0.55884246 0.51996251 0.13923623]]

[[ 0.54949654 0.09005034 0.42206612]
[ 0.94917494 0.38606105 0.79835506]]]
(3, 2, 3)
18
float64
3

 

Numpy基本數據類型:int_默認整型,int8-i1(1個字節2的0次方,一個字節是8位,2的8次方是-127-128)  int16-i2...

uint8-u1(u就是無符號,簡單來講就是正整數) 

float16-f2  float32-f4(1個符號位+8位指數+23位小數)

既有數字又有數字定義object

String_-S 字節  一個字符一個字節

Unicode_-U 字符串 每一個字符佔用字節數由平臺決定

修改數據類型:

修改實際上是新的數組原來的數組沒有變

a=np.array([1,2,3,4])
print(a.dtype)
b=a.astype(float)
print(a.dtype)
print(b.dtype)

int32
int32
float64

 

ndarray修改形狀

直接使用reshape函數建立一個改變尺寸的新數組,原數組的shape保持不變,可是新數組和原數組共享一個內存空間,也就是修改任何一個數組中的值都會對另一個產生影響,另外要求新數組的元素個數和原數組一致

a=np.arange(0,20,2)
b=a.reshape(5,2)
print(a)
print(b)
b[0][1]=100
print(a)
print(b)

 [ 0 2 4 6 8 10 12 14 16 18]

[[ 0 2]
[ 4 6]
[ 8 10]
[12 14]
[16 18]]
[ 0 100 4 6 8 10 12 14 16 18]
[[ 0 100]
[ 4 6]
[ 8 10]
[ 12 14]
[ 16 18]]

當指定某一個軸爲-1的時候,表示將根據數組元素的數量自動計算該軸的長度值

reshape修改複製以後的形狀,a.shape修改原數組的形狀

a=np.arange(0,20,2)
b=a.reshape(5,-1)
print(a)
print('-'*20)
print(b)
print('-'*20)
a.shape=(2,-1)
print(a)

 [ 0 2 4 6 8 10 12 14 16 18]

--------------------
[[ 0 2]
[ 4 6]
[ 8 10]
[12 14]
[16 18]]
--------------------
[[ 0 2 4 6 8]
[10 12 14 16 18]]

 

Numpy基本操做

ndarray-數組與標量、數組之間的運算:數組不用循環便可對每一個元素執行批量的算術運算操做,這個過程叫作矢量化,即用數組表達式代替循環的作法

1.矩陣與數之間的運算

a=np.arange(1,6)
print(a)
print(a+2)
print(a-2)
print(a*2)
print(a/2)
print(1/a)
print(a**2)
print(2**a)

[1 2 3 4 5]

[3 4 5 6 7]
[-1 0 1 2 3]
[ 2 4 6 8 10]
[ 0.5 1. 1.5 2. 2.5]
[ 1. 0.5 0.33333333 0.25 0.2 ]
[ 1 4 9 16 25]
[ 2 4 8 16 32]

本質上是前面的np.arange(20),只要裏面的數字相同便可,結果和維度多的那個同樣
a=np.arange(20).reshape(1,4,5)
print('a=')
print(a)
print('-'*20)
b=np.arange(20).reshape(4,5)
print('b=')
print(b)
print('-'*20)
print('a+b=')
print(a+b)

a=
[[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]]]
--------------------
b=
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]]
--------------------
a+b=
[[[ 0 2 4 6 8]
[10 12 14 16 18]
[20 22 24 26 28]
[30 32 34 36 38]]]

2.矩陣與矩陣之間的運算

arr1=np.array([[1,2,3],[4,5,6]])
arr2=np.array([[4.6,3.2,2.1],[5.2,4.3,3.4]])
print('arr1+arr2=')
print(arr1+arr2)
print('arr1-arr2=')
print(arr1-arr2)
print('arr1*arr2=')
print(arr1*arr2)
print('arr1/arr2=')
print(arr1/arr2)

 arr1+arr2=

[[ 5.6 5.2 5.1]
[ 9.2 9.3 9.4]]
arr1-arr2=
[[-3.6 -1.2 0.9]
[-1.2 0.7 2.6]]
arr1*arr2=
[[ 4.6 6.4 6.3]
[ 20.8 21.5 20.4]]
arr1/arr2=
[[ 0.2173913 0.625 1.42857143]
[ 0.76923077 1.1627907 1.76470588]]

不一樣形狀的數組進行運算,經過廣播能力,4和4要對應上才能夠乘
a=np.array([1,2,3,4])#(4,)
b=np.array([[10,20,30,40],[1,2,3,4]])#(2,4)
print(a*b)

 

[[ 10 40 90 160]
[ 1 4 9 16]]

 

3.數組的矩陣積:dot和inner在二維上是同樣的,三維上有區別

arr1=np.array([[1,2],[4,5]])
arr2=np.array([[4.6,3.2],[5.2,4.3]])
print(arr1.dot(arr2))
arr3=np.dot(arr1,arr2)
print(arr3)

 [[ 15. 11.8]

[ 44.4 34.3]]
[[ 15. 11.8]
[ 44.4 34.3]]

 

矩陣索引

arr=np.array([
    [
        [2,3,4,5],[1,3,4,9]
    ],
    [
        [0,3,4,8],[2,4,9,4]
    ],
    [
        [1,4,5,8],[2,5,6,8]
    ],
    [
        [2,3,6,8],[3,4,8,9]
    ]
])
print(arr[3])
print('-'*20)
print(arr[3,1])
print('-'*20)
print(arr[3][1][2])
print('-'*20)
print(arr[3,1,2])

 

結果:

[[2 3 6 8]
[3 4 8 9]]
--------------------
[3 4 8 9]
--------------------
8
--------------------
8

在各維度上單獨切片,若是某維度都保留,則直接使用:,不指定起始值和終止值

注意:Numpy中經過切片獲得的新數組,只是原來數組的一個試圖,所以對新數組進行操做也會影響原數組,不能使用arr[:][:][1:3]若是這樣,第一個[]就默認把數組取完了

arr=np.array([
    [
        [2,3,4,5],[1,3,4,9]
    ],
    [
        [0,3,4,8],[2,4,9,4]
    ],
    [
        [1,4,5,8],[2,5,6,8]
    ],
    [
        [2,3,6,8],[3,4,8,9]
    ]
])
print(arr[3][1][1:3])
print('-'*20)
print(arr[3,1,1:3])

 

結果:

[4 8]
--------------------
[4 8]

利用布爾類型的數組進行數據索引,最終返回的結果是對應索引數組中數據爲True位置的值

arr=np.random.random((4,4))
arr2=arr<0.5
print(arr2)
arr3=arr[arr2]
print(arr3,arr3.shape)

 [[False False False False]

[ True False True False]
[False True False False]
[ True False True True]]
[ 0.2886168 0.49285157 0.09925616 0.00371036 0.0282944 0.20428113] (6,)

Numpy中不能使用and、or和not,相應的替代爲| & ~

names=np.array(['Gerry','Tom','John'])
scores=np.array([
    [98,87,86,95],
    [58,56,54,51],
    [78,85,85,77]
])
classes=np.array(['語文','數學','英語','科學'])
print('Gerry score is:',scores[names=='Gerry'].reshape((-1)))
print('Gerry math score is:',scores[names=='Gerry'].reshape((-1))[classes=='數學'])
print('Gerry and Tom scores are: ',scores[(names=='Gerry')|(names=='Tom')])
print('not Gerry and Tom scores are: ',scores[(names!='Gerry')&(names!='Tom')])

 Gerry score is: [98 87 86 95]

Gerry math score is: [87]
Gerry and Tom scores are: [[98 87 86 95]
[58 56 54 51]]
not Gerry and Tom scores are: [[78 85 85 77]]

 

花式索引:花式索引(Fancy indexing)指的是利用整數數組進行索引的方式

arr=np.arange(32).reshape(8,4)
print(arr)
print('獲取第0,3,5行數據')
print(arr[[0,3,5]])
print('獲取第(0,0)、(3,3)、(5,2)這三個位置的數據')
print(arr[[0,3,5],[0,3,2]])
print('獲取第0、三、5行的第0、二、3列的數據')
print(arr[np.ix_([0,3,5],[0,2,3])])

 [[ 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]]
獲取第0,3,5行數據
[[ 0 1 2 3]
[12 13 14 15]
[20 21 22 23]]
獲取第(0,0)、(3,3)、(5,2)這三個位置的數據
[ 0 15 22]
獲取第0、三、5行的第0、二、3列的數據
[[ 0 2 3]
[12 14 15]
[20 22 23]]

 

矩陣的轉置

arr=np.arange(32).reshape(8,4)
print(arr,arr.shape)
arr1=arr.transpose()
print('轉置後的數據')
print(arr1,arr1.shape)
print('第二種方法:')
print(arr.T,arr.T.shape)

 [[ 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]] (8, 4)
轉置後的數據
[[ 0 4 8 12 16 20 24 28]
[ 1 5 9 13 17 21 25 29]
[ 2 6 10 14 18 22 26 30]
[ 3 7 11 15 19 23 27 31]] (4, 8)
第二種方法:
[[ 0 4 8 12 16 20 24 28]
[ 1 5 9 13 17 21 25 29]
[ 2 6 10 14 18 22 26 30]
[ 3 7 11 15 19 23 27 31]] (4, 8)

多維度轉置,(3,4,2)對應的位置分別是0,1,2,transpose(1,0,2)對應的就是4,3,2能夠本身計算,好比一個位置是(2,3,1) 轉置事後的位置就是(3,2,1)

a=np.arange(24).reshape(3,4,2)
print(a)
print(a.shape)
a=a.transpose(1,0,2)
print(a)
print(a.shape)

 

[[[ 0 1]
[ 2 3]
[ 4 5]
[ 6 7]]

[[ 8 9]
[10 11]
[12 13]
[14 15]]

[[16 17]
[18 19]
[20 21]
[22 23]]]
(3, 4, 2)
[[[ 0 1]
[ 8 9]
[16 17]]

[[ 2 3]
[10 11]
[18 19]]

[[ 4 5]
[12 13]
[20 21]]

[[ 6 7]
[14 15]
[22 23]]]
(4, 3, 2)

 Ndarray經常使用函數

abs/fabs:去絕對值,fabs快一點

arr=np.array([-5.3,-6.2,-5,0,4.2,5,3,2,1])
print(np.abs(arr))
print(np.fabs(arr))

 [ 5.3 6.2 5. 0. 4.2 5. 3. 2. 1. ]

[ 5.3 6.2 5. 0. 4.2 5. 3. 2. 1. ]

sqrt:平方更,要求每一個元素大於等於0

arr=np.array([-5.3,-6.2,-5,0,4.2,5,3,2,1])
print(np.sqrt(np.fabs(arr)))

 [ 2.30217289 2.48997992 2.23606798 0. 2.04939015 2.23606798

1.73205081 1.41421356 1. ]

square:計算每一個元素的評分,至關於arr**2

arr=np.array([-5.3,-6.2,-5,0,4.2,5,3,2,1])
print(np.square(arr))

  [ 28.09  38.44  25.     0.    17.64  25.     9.     4.     1.  ]

 exp:計算每一個元素的指數e的x次方

arr=np.array([-5.3,-6.2,-5,0,4.2,5,3,2,1])
print(np.exp(arr))

 [ 4.99159391e-03 2.02943064e-03 6.73794700e-03 1.00000000e+00

6.66863310e+01 1.48413159e+02 2.00855369e+01 7.38905610e+00
2.71828183e+00]

log、log十、log二、log1p:分別計算天然對數、底數爲10的log、底數爲2的log以及log(1+x);要求arr中的每一個元素必須爲正數

numpy作不了以2和10其餘之外的底數的計算

arr=np.array([-5.3,-6.2,-5,0,4.2,5,3,2,1])
arr=np.fabs(arr+1)
arr=np.fabs(arr)
print(np.log(arr))
print(np.log10(arr))
print(np.log2(arr))
print(np.log1p(arr))

 [ 1.45861502 1.64865863 1.38629436 0. 1.64865863 1.79175947

1.38629436 1.09861229 0.69314718]
[ 0.63346846 0.71600334 0.60205999 0. 0.71600334 0.77815125
0.60205999 0.47712125 0.30103 ]
[ 2.10433666 2.37851162 2. 0. 2.37851162 2.5849625 2.
1.5849625 1. ]
[ 1.66770682 1.82454929 1.60943791 0.69314718 1.82454929 1.94591015
1.60943791 1.38629436 1.09861229]

sign:計算每一個元素的符號1表示正 0:0 -1表示負號

arr=np.array([-5.3,-6.2,-5,0,4.2,5,3,2,1])
print(np.sign(arr))

[-1. -1. -1.  0.  1.  1.  1.  1.  1.]

ceil:計算大於等於該值得最小整數

arr=np.array([-5.3,-6.2,-5,0,4.2,5,3,2,1])
print(np.ceil(arr))

 [-5. -6. -5.  0.  5.  5.  3.  2.  1.]

floor:與ceil對應,去小於或等於該值得最大整數

arr=np.array([-5.3,-6.2,-5,0,4.2,5,3,2,1])
print(np.floor(arr))

 [-6. -7. -5.  0.  4.  5.  3.  2.  1.]

rint:四捨五入最接近的整數

arr=np.array([-5.3,-6.2,-5,0,4.2,5,3,2,1])
print(np.rint(arr))

 [-5. -6. -5.  0.  4.  5.  3.  2.  1.]

modf:將數組中的整數和小數分兩個數組返回

arr=np.array([-5.3,-6.2,-5,0,4.2,5,3,2,1])
print(np.modf(arr))

 (array([-0.3, -0.2, -0. ,  0. ,  0.2,  0. ,  0. ,  0. ,  0. ]), array([-5., -6., -5.,  0.,  4.,  5.,  3.,  2.,  1.]))

isnan:不是數字的bool值isnan是is not a number縮寫

arr=np.array([-5.3,-6.2,-5,0,4.2,5,3,2,1])
print(np.isnan(arr))

 [False False False False False False False False False]

isfinte:判斷是不是無窮的

isinf:判斷是不是有限的

arr=np.array([np.pi,3])
print(np.isfinite(arr))
print(np.isinf(arr))

 [ True True]

[False False]

sin、cos、tan、sinh、cosh、tanharccos、arccosh、arcsin、arcsinh、arctan、arctanh:雙曲正弦sinhx=[e^x-e^(-x)]/2,雙曲餘弦coshx=[e^x+e^(-x)]/2,雙曲正切tanh=(e^(-x)-e^x)/(e^(-x)+e^x)

arr=np.array([np.pi/2,np.pi/3,np.pi/4])
print(np.sin(arr))
print(np.cos(arr))
print(np.tan(arr))
print(np.sinh(arr))
print(np.cosh(arr))
print(np.tanh(arr))

 [ 1. 0.8660254 0.70710678]

[ 6.12323400e-17 5.00000000e-01 7.07106781e-01]
[ 1.63312394e+16 1.73205081e+00 1.00000000e+00]
[ 2.3012989 1.24936705 0.86867096]
[ 2.50917848 1.60028686 1.32460909]
[ 0.91715234 0.78071444 0.6557942 ]

mod:元素級取餘
greater:arr2>arr1
greater_equal:arr2>=arr1
less:arr2<arr1
less_equal:arr2<=arr1
equal:arr2==arr1
not_equal:arr2!=arr1
arr1=np.array([1,2,8,1])
arr2=np.array([4,5,6,1])
print('np.mod(arr2,arr1)=',np.mod(arr2,arr1))
print('greater:arr2>arr1:',np.greater(arr2,arr1))
print('greater:arr2>=arr1:',np.greater_equal(arr2,arr1))
print('greater:arr2<arr1:',np.less(arr2,arr1))
print('greater:arr2<=arr1:',np.less_equal(arr2,arr1))
print('greater:arr2==arr1:',np.equal(arr2,arr1))
print('greater:arr2!=arr1:',np.not_equal(arr2,arr1))

 np.mod(arr2,arr1)= [0 1 6 0]

greater:arr2>arr1: [ True True False False]
greater:arr2>=arr1: [ True True False True]
greater:arr2<arr1: [False False True False]
greater:arr2<=arr1: [False False True True]
greater:arr2==arr1: [False False False True]
greater:arr2!=arr1: [ True True True False]

logical_and、logical_or、logical_xor:執行元素級別的布爾邏輯運算,至關於中綴運算符&、|、^

arr1=np.array([1,2,8,1])
arr2=np.array([4,5,6,0])
print(np.logical_or(arr1,arr2))
print(np.logical_and(arr1,arr2))
print(np.logical_xor(arr1,arr2))

 [ True True True True]

[ True True True False]
[False False False True]

power:至關於arr1**arr2

arr1=np.array([1,2,8,1])
arr2=np.array([4,5,6,0])
print(np.power(arr1,arr2))

 [     1     32 262144      1]

Numpy聚合函數

axis=0按列計算
axis=1按行計算
mean:去平均值 默認求全局的
min:最小值
max:最大值
sum:求和
std:標準差 np.sqrt(np.power(arr-arr.mean(),2)).sum()/arr.size
arr=np.array([
    [1,3,5,9],
    [2,4,6,8],
    [-5,-6,-8,-2]
])
print('arr.mean(axis=0)',arr.mean(axis=0))
print('arr.min(axis=1)',arr.min(axis=1))
print('arr.max',arr.max())
print('arr.sum(axis=1)',arr.sum(axis=1))
print('arr.std(axis=0)',arr.std(axis=0))

 arr.mean(axis=0) [-0.66666667 0.33333333 1. 5. ]

arr.min(axis=1) [ 1 2 -8]
arr.max 9
arr.sum(axis=1) [ 18 20 -21]
arr.std(axis=0) [ 3.09120617 4.49691252 6.37704216 4.96655481]

 np.where函數

xarr=np.array([-1.1,-1.2,-1.3,-1.4,-1.5])
yarr=np.array([-2.1,-2.2,-2.3,-2.4,-2.5])
condiion=xarr<yarr
result1=[x if c else y for (x,y,c) in zip(xarr,yarr,condiion)]
print(result1,type(result1))
result2=np.where(condiion,xarr,yarr)
print(result2,type(result2))

 [-2.1000000000000001, -2.2000000000000002, -2.2999999999999998, -2.3999999999999999, -2.5] <class 'list'>

[-2.1 -2.2 -2.3 -2.4 -2.5] <class 'numpy.ndarray'>

將數組中的全部異常數字替換爲0,好比將NaN替換爲0

arr=np.array([
    [1,2,np.NaN,4],
    [4,5,6,np.NaN],
    [7,8,9,np.NaN],
    [np.inf,np.e,np.pi,4]
])
condition=np.isnan(arr)|np.isinf(arr)
print('原始數據:')
print(arr)
print('修改後的數據:')
print(np.where(condition,0,arr))

 原始數據:

[[ 1. 2. nan 4. ]
[ 4. 5. 6. nan]
[ 7. 8. 9. nan]
[ inf 2.71828183 3.14159265 4. ]]
修改後的數據:
[[ 1. 2. 0. 4. ]
[ 4. 5. 6. 0. ]
[ 7. 8. 9. 0. ]
[ 0. 2.71828183 3.14159265 4. ]]

unique:去重操做

arr=np.array(['圖書','數碼','圖書','小吃','小吃'])
print('原始數據:')
for i in arr:
    print(i,end=' ')
print()
print('修改後的數據:')
arr1=np.unique(arr)
for i in arr1:
    print(i,end=' ')

 原始數據:

圖書 數碼 圖書 小吃 小吃 

修改後的數據:
圖書 小吃 數碼

 

 

 

adding:

Jupyter Notebook文件地址設置:

1.打開cmd,輸入 jupyter notebook --generate-config 

2.打開這個配置文件,找到「c.NotebookApp.notebook_dir=‘’ 」,去掉前面的#號, 把路徑改爲本身的工做目錄

3.配置文件修改完成後, 之後在jupyter notebook中寫的代碼等都會保存在 本身建立的目錄中。

按以上操做以後重啓Jupyter Notebook可能無效,解決方法以下:

jupyter notebook->右鍵->屬性->將目標中的%users%去掉

 

arr=np.array([u'數學',u'語文'])不能顯示字符能夠在前面加u

 

jupyter上方有的Cell,裏面的cell all能夠一次性執行全部步驟

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息