# 创建多维数组:ndarray为多维数组对象(数组作为数组的元素)
import numpy as np
# 创建ndarray
data1 = [1,2,3,4,5,6]
ndarr1 = np.array(data1)
print(ndarr1)
data2 = [[1,2,3],[4,5,6]]
ndarr2 = np.array(data2)
print(ndarr2)
# ndim表示数组的维度
# shape表示维度与元素内部的维度,相当于建立个矩阵,例如data2有两个元素,内部各3个元素,组成2*3的矩阵
# dtype表示数据类型
print(ndarr2.ndim)
print(ndarr2.shape)
print(ndarr2.dtype)
控制台:
[1 2 3 4 5 6]
[[1 2 3]
[4 5 6]]
2
(2, 3)
int32
======================================================================================
#数组运算:两个ndarray相同位置的元素进行运算
data3 = [[1,2,3],[4,5,6]]
data4 = [[4,5,6],[7,8,9]]
ndarr3 = np.array(data3)
ndarr4 = np.array(data4)
print(ndarr3 + data4)
print(ndarr3 * ndarr4)
print(ndarr3 - ndarr4)
print(ndarr4 > ndarr3)
控制台:
[[ 5 7 9]
[11 13 15]]
[[ 4 10 18]
[28 40 54]]
[[-3 -3 -3]
[-3 -3 -3]]
[[ True True True]
[ True True True]]
======================================================================================
# 基础索引与切片:一维数组
data5 = [1,2,3,4,5,6,7,8,9]
data6 = np.array(data5)
data7 = data6[2:4]
print(data6)
print(data7)
# data7是data6的切片,并且依旧映射data6,不想java或者scala是复制生成新的数组
# 改变data7的某个切片的值,data6中对应的元素也会改变,如果不想这样可以进行copy()操作
# data7 = data6[2:4].copy
data7[1] = 666
print(data7)
print(data6)
控制台:
[1 2 3 4 5 6 7 8 9]
[3 4]
[ 3 666]
[ 1 2 3 666 5 6 7 8 9]
======================================================================================
# 基础索引与切片:多维数组
data8 = [[1,2,3],[4,5,6],[7,8,9]]
data9 = np.array(data8)
print(data9[2])
# 确定某个元素中的元素可以用一下两种方法
print(data9[2][1])
print(data9[2,1])
# 多维数组可以对内部数组更新同一个值
data9[0] = 22
print(data9)
data9[0] = [11,11,11]
print(data9)
# 多维数组切片,[:2]打印第二行的前几行,不包括2
# 即使是改变切片的值,跟一维数组相同,都会改变原始与切片对应位置的数组或者元素
print(data1[:2])
print(data1[1][:2])
控制台:
[7 8 9]
8
8
[[22 22 22]
[ 4 5 6]
[ 7 8 9]]
[[11 11 11]
[ 4 5 6]
[ 7 8 9]]
[[1, 2, 3], [4, 5, 6]]
[4, 5]
======================================================================================