python中用numpy.array()生成数组的机制

思考源于这个错误,在一次简单的类型转换X_train1 = np.array(X_train) 中出现了如下问题:

python中用numpy.array()生成数组的机制_第1张图片


查阅了一个博客,得到了如下动态生成多维数组的示例,稍加修改,如下所示,运行成功。

# coding:utf-8

# 使用Python3中的print函数
from __future__ import print_function
import numpy as np

arr = []

# 基本思想是在list中动态添加list,每个list可以嵌套,这样就可以形成多维数组了
# arr中保存的而是row的集合,row中保存的是col的集合
# 这是一个3×3×2的三维数组
for k in range(4):
    hei=[]
    for i in range(3):
        row = []
        for j in range(3):
            col = []
            col.append(i + j)
            col.append(i * j)
            row.append(col)
        hei.append(row)
    arr.append(hei)

print(arr)
            
a=np.array(arr)
a.shape

python中用numpy.array()生成数组的机制_第2张图片于是思考Xtrain的结构,测试如下:

print(type(X_train))
print(type(X_train[0]))
print(type(X_train[0][0]))
print(type(X_train[0][0][0]))
print('asdasdasdadsdasd')
print(len(X_train))
print(len(X_train[0]))
print(len(X_train[0][0]))
print(len(X_train[0][0][0]))
print('asdasdasdadsdasd')
print(type(arr))
print(type(arr[0]))
print(type(arr[0][0]))
print(type(arr[0][0][0]))
print('asdasdasdadsdasd')
print(len(arr))
print(len(arr[0]))
print(len(arr[0][0]))
print(len(arr[0][0][0]))

结果如下:

python中用numpy.array()生成数组的机制_第3张图片

差别就是如果要多维度的生成array必须是嵌套的list,不知道机制是不是这样的, 如果有人知道官方解释就好了。

你可能感兴趣的:(硕)