python - 如何加载某些列作为特定类型的numpy数组
问题描述
我试过以下:
>>> arr2 = [[0, 0, 0, -0.9, 0.3], [0, 0, 1, 0.9, 0.6], [0, 1, 0, -0.2, 0.6], [0, 1, 1, 0.8, 0.3], [1, 0, 1, 0.2, 1.0], [1, 1, 0, -0.8, 1.0]]
>>> narr2 = np.array(arr2)
>>> narr2
array([[ 0. , 0. , 0. , -0.9, 0.3],
[ 0. , 0. , 1. , 0.9, 0.6],
[ 0. , 1. , 0. , -0.2, 0.6],
[ 0. , 1. , 1. , 0.8, 0.3],
[ 1. , 0. , 1. , 0.2, 1. ],
[ 1. , 1. , 0. , -0.8, 1. ]])
如何使前三列具有类型int
?这就是我如何获得以下信息:
>>> narr2
array([[ 0 , 0 , 0 , -0.9, 0.3],
[ 0 , 0 , 1 , 0.9, 0.6],
[ 0 , 1 , 0 , -0.2, 0.6],
[ 0 , 1 , 1 , 0.8, 0.3],
[ 1 , 0 , 1 , 0.2, 1. ],
[ 1 , 1 , 0 , -0.8, 1. ]])
我试过以下:
>>> narr2 = np.array(arr2,dtype='i4,i4,i4,f8,f8')
>>> narr2
array([[(0, 0, 0, 0. , 0. ), (0, 0, 0, 0. , 0. ),
(0, 0, 0, 0. , 0. ), (0, 0, 0, -0.9, -0.9),
(0, 0, 0, 0.3, 0.3)],
[(0, 0, 0, 0. , 0. ), (0, 0, 0, 0. , 0. ),
(1, 1, 1, 1. , 1. ), (0, 0, 0, 0.9, 0.9),
(0, 0, 0, 0.6, 0.6)],
[(0, 0, 0, 0. , 0. ), (1, 1, 1, 1. , 1. ),
(0, 0, 0, 0. , 0. ), (0, 0, 0, -0.2, -0.2),
(0, 0, 0, 0.6, 0.6)],
[(0, 0, 0, 0. , 0. ), (1, 1, 1, 1. , 1. ),
(1, 1, 1, 1. , 1. ), (0, 0, 0, 0.8, 0.8),
(0, 0, 0, 0.3, 0.3)],
[(1, 1, 1, 1. , 1. ), (0, 0, 0, 0. , 0. ),
(1, 1, 1, 1. , 1. ), (0, 0, 0, 0.2, 0.2),
(1, 1, 1, 1. , 1. )],
[(1, 1, 1, 1. , 1. ), (1, 1, 1, 1. , 1. ),
(0, 0, 0, 0. , 0. ), (0, 0, 0, -0.8, -0.8),
(1, 1, 1, 1. , 1. )]],
dtype=[('f0', '<i4'), ('f1', '<i4'), ('f2', '<i4'), ('f3', '<f8'), ('f4', '<f8')])
可以看出,我没有得到想要的输出。似乎我不明白如何在创建数组时指定类型以及哪里出错了。
解决方案
我建议您将列表转换为元组,然后分配数据类型。这是我的解决方案:
import numpy as np
arr2 = [[0, 0, 0, -0.9, 0.3], [0, 0, 1, 0.9, 0.6],
[0, 1, 0, -0.2, 0.6], [0, 1, 1, 0.8, 0.3], [1, 0, 1, 0.2, 1.0], [1, 1, 0, -0.8, 1.0]]
tupp2 = [tuple(l) for l in arr2]
datatype = [('A', np.int), ('B', np.int), ('C', np.int), ('D', np.float), ('E', np.float)]
narr2 = np.array(tupp2, dtype=datatype)
检查每列的数据类型:
for i in narr2[0]:
print(i.dtype)
给出:
int32
int32
int32
float64
float64
推荐阅读
- python - 用 pandas 读取 excel 列
- php - Laravel/Lumen 响应内容必须是实现 __toString() 的字符串或对象,“boolean”给定
- c# - 跨不同命名空间的相同类名 - 如何通过直接父命名空间访问类?
- reactjs - 如何禁用 IE11 在 React Using Styledcomponents Library 中放置在文本框中的清除按钮?
- reactjs - 重定向状态在 React Router 4.x 中不起作用
- angular - 在添加为选项卡的 Angular 应用程序中获取 Microsoft Team 上下文
- javascript - 如何检查 HTMLElement 是否已完全加载
- java - 从多个 Java 线程发送消息
- algorithm - 问答游戏的排名算法
- facebook-graph-api - 如何使用 facebook graph api 3.0 版点赞、评论和分享任何页面的帖子?