In [12]:
#coding=utf-8
import numpy as np
a = np.arange(9).reshape(3,3)
b = a * 2
print('hstack 接受tuple,因此必须使用内部圆括号')
c1 = np.hstack((a,b))
print(c1)
print("equalvalent method:")
c2 = np.concatenate((b,a),axis=1)
print(c2)
Output:
hstack 接受tuple,因此必须使用内部圆括号
[[ 0 1 2 0 2 4]
[ 3 4 5 6 8 10]
[ 6 7 8 12 14 16]]
equalvalent method:
[[ 0 2 4 0 1 2]
[ 6 8 10 3 4 5]
[12 14 16 6 7 8]]
In [13]:
# vertically
v1 = np.vstack((a,b))
print(v1)
print("equalvalent method:")
v2 = np.concatenate((b,a),axis=0)
print(v2)
Output:
[[ 0 1 2]
[ 3 4 5]
[ 6 7 8]
[ 0 2 4]
[ 6 8 10]
[12 14 16]]
equalvalent method:
[[ 0 2 4]
[ 6 8 10]
[12 14 16]
[ 0 1 2]
[ 3 4 5]
[ 6 7 8]]
In [16]:
#深度堆叠,在最后一个维度上
d1 = np.dstack((a,b))
print(d1)
print("按列堆")
d2 = np.column_stack((a,b))
print(d2)
print("等效方法")
print(np.hstack((a,b)) == np.column_stack((a,b)))
Output:
[[[ 0 0]
[ 1 2]
[ 2 4]]
[[ 3 6]
[ 4 8]
[ 5 10]]
[[ 6 12]
[ 7 14]
[ 8 16]]]
按列堆
[[ 0 1 2 0 2 4]
[ 3 4 5 6 8 10]
[ 6 7 8 12 14 16]]
[[ True True True True True True]
[ True True True True True True]
[ True True True True True True]]
In [17]:
r2 = np.row_stack((a,b))
r3 = np.vstack((a,b))
print(r2)
print(r3)
print(r2==r3)
Output:
[[ 0 1 2]
[ 3 4 5]
[ 6 7 8]
[ 0 2 4]
[ 6 8 10]
[12 14 16]]
[[ 0 1 2]
[ 3 4 5]
[ 6 7 8]
[ 0 2 4]
[ 6 8 10]
[12 14 16]]
[[ True True True]
[ True True True]
[ True True True]
[ True True True]
[ True True True]
[ True True True]]
In [26]:
print(np.hsplit(a,1))
print(np.hsplit(a,3))
print("equalvalent method:")
print(np.split(a,3,axis=1))
Output:
[array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])]
[array([[0],
[3],
[6]]), array([[1],
[4],
[7]]), array([[2],
[5],
[8]])]
equalvalent method:
[array([[0],
[3],
[6]]), array([[1],
[4],
[7]]), array([[2],
[5],
[8]])]
In [27]:
print(np.vsplit(a,1))
print(np.vsplit(a,3))
print("equalvalent method:")
print(np.split(a,3,axis=0))
Output:
[array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])]
[array([[0, 1, 2]]), array([[3, 4, 5]]), array([[6, 7, 8]])]
equalvalent method:
[array([[0, 1, 2]]), array([[3, 4, 5]]), array([[6, 7, 8]])]
In [31]:
c = np.arange(27)
c.shape = (3,3,3)
print(c)
np.dsplit(c,3)
Output:
[[[ 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]]]
Out[31]:
[array([[[ 0],
[ 3],
[ 6]],
[[ 9],
[12],
[15]],
[[18],
[21],
[24]]]), array([[[ 1],
[ 4],
[ 7]],
[[10],
[13],
[16]],
[[19],
[22],
[25]]]), array([[[ 2],
[ 5],
[ 8]],
[[11],
[14],
[17]],
[[20],
[23],
[26]]])]
In [53]:
#属性
b=np.arange(24).reshape(3,8)
print(b.ndim)
print(b.size)
print(b.itemsize)
print(b.nbytes)
print(b.size *b.itemsize)
b.resize(4,6)
print(b)
print(b.T)
Output:
2
24
4
96
96
[[ 0 1 2 3 4 5]
[ 6 7 8 9 10 11]
[12 13 14 15 16 17]
[18 19 20 21 22 23]]
[[ 0 6 12 18]
[ 1 7 13 19]
[ 2 8 14 20]
[ 3 9 15 21]
[ 4 10 16 22]
[ 5 11 17 23]]
In [59]:
cp = np.array([1.j+1,2.j+3])
print(cp)
print(cp.real)
print(cp.imag)
print(cp.dtype)
print(cp.dtype.str)
Output:
[1.+1.j 3.+2.j]
[1. 3.]
[1. 2.]
complex128
<c16
In [65]:
f = cp.flat
print(f)
or item in f : print(item)
Output:
<numpy.flatiter object at 0x00000000067D11B0>
(1+1j)
(3+2j)
In [75]:
c = np.arange(8)*2
print(c)
print(c.flat[[1,3,5]])
#双层方括号
c.flat[[1,3]] = 7
print(c)
c.flat = 7
print(c)
Output:
[ 0 2 4 6 8 10 12 14]
[ 2 6 10]
[ 0 7 4 7 8 10 12 14]
[7 7 7 7 7 7 7 7]
In [ ]:
#itemsize size nbytes
# \ | /
#ndim -- *ndarray* --- T
# / | \
#real imag flat
Output:
In [77]:
#转换
print(cp.tolist())
print(cp.astype('f'))
Output:
[(1+1j), (3+2j)]
[1. 3.]
C:\ProgramData\Anaconda3\lib\site-packages\ipykernel_launcher.py:3: ComplexWarning: Casting complex values to real discards the imaginary part
This is separate from the ipykernel package so we can avoid doing imports until