- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我的目标是将我的数据转换为 numpy 数组,同时保留原始列表中的数字格式,清晰且正确。
例如,这是我的列表格式数据:
[[24.589888563639835, 13.899891781550952, 4478597, -1], [26.822224204095697, 14.670531752529088, 4644503, -1], [51.450405486761866, 54.770422572665254, 5570870, 0], [44.979065080591504, 54.998835550128852, 6500333, 0], [44.866399274880663, 55.757240813761534, 6513301, 0], [45.535380533604247, 57.790074517001365, 6593281, 0], [44.850372630818214, 54.720574554485822, 6605483, 0], [51.32738085400576, 55.118344981379266, 6641841, 0]]
当我将它转换为 numpy 数组时,
data = np.asarray(data)
我得到数学符号 e
,如何在我的输出数组中保存相同的格式?
[[ 2.45898886e+01 1.38998918e+01 4.47859700e+06 -1.00000000e+00]
[ 2.68222242e+01 1.46705318e+01 4.64450300e+06 -1.00000000e+00]
[ 5.14504055e+01 5.47704226e+01 5.57087000e+06 0.00000000e+00]
[ 4.49790651e+01 5.49988356e+01 6.50033300e+06 0.00000000e+00]
[ 4.48663993e+01 5.57572408e+01 6.51330100e+06 0.00000000e+00]
[ 4.55353805e+01 5.77900745e+01 6.59328100e+06 0.00000000e+00]
[ 4.48503726e+01 5.47205746e+01 6.60548300e+06 0.00000000e+00]
[ 5.13273809e+01 5.51183450e+01 6.64184100e+06 0.00000000e+00]]
我做到了:
np.set_printoptions(precision=6,suppress=True)
但是当我将部分数据传递给另一个变量然后查看它时,我仍然得到不同的数字,我发现小数点已经改变了!为什么它会在内部更改小数位,为什么它不能保持原样?
最佳答案
从嵌套列表创建简单数组:
In [133]: data = np.array(alist)
In [136]: data.shape
Out[136]: (8, 4)
In [137]: data.dtype
Out[137]: dtype('float64')
这是一个二维数组,8行,4列;所有元素都存储为 float 。
列表可以加载到结构化数组中,该数组被定义为具有 float 和整数字段的混合。请注意,对于此负载,我必须将“行”转换为元组。
In [139]: dt = np.dtype('f,f,i,i')
In [140]: dt
Out[140]: dtype([('f0', '<f4'), ('f1', '<f4'), ('f2', '<i4'), ('f3', '<i4')])
In [141]: data = np.array([tuple(row) for row in alist], dtype=dt)
In [142]: data.shape
Out[142]: (8,)
In [143]: data
Out[143]:
array([( 24.58988762, 13.89989185, 4478597, -1),
( 26.82222366, 14.67053223, 4644503, -1),
( 51.45040512, 54.77042389, 5570870, 0),
( 44.97906494, 54.99883652, 6500333, 0),
( 44.86639786, 55.7572403 , 6513301, 0),
( 45.53538132, 57.79007339, 6593281, 0),
( 44.85037231, 54.72057343, 6605483, 0),
( 51.32738113, 55.11834335, 6641841, 0)],
dtype=[('f0', '<f4'), ('f1', '<f4'), ('f2', '<i4'), ('f3', '<i4')])
您按名称而不是列号访问字段:
In [144]: data['f0']
Out[144]:
array([ 24.58988762, 26.82222366, 51.45040512, 44.97906494,
44.86639786, 45.53538132, 44.85037231, 51.32738113], dtype=float32)
In [145]: data['f3']
Out[145]: array([-1, -1, 0, 0, 0, 0, 0, 0], dtype=int32)
将这些值与二维 float 组中单列的显示进行比较:
In [146]: dataf = np.array(alist)
In [147]: dataf[:,0]
Out[147]:
array([ 24.58988856, 26.8222242 , 51.45040549, 44.97906508,
44.86639927, 45.53538053, 44.85037263, 51.32738085])
In [148]: dataf[:,3]
Out[148]: array([-1., -1., 0., 0., 0., 0., 0., 0.])
当混合使用 float 、整数、字符串或其他数据类型时,使用结构化数组更有意义。
但要备份一点——纯 float 版本有什么问题?为什么保留 2 列的整数标识很重要?
关于python 将列表转换为 numpy 数组,同时保留数字格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43252197/
我正在尝试创建一个包含 int[][] 项的数组 即 int version0Indexes[][4] = { {1,2,3,4}, {5,6,7,8} }; int version1Indexes[
我有一个整数数组: private int array[]; 如果我还有一个名为 add 的方法,那么以下有什么区别: public void add(int value) { array[va
当您尝试在 JavaScript 中将一个数组添加到另一个数组时,它会将其转换为一个字符串。通常,当以另一种语言执行此操作时,列表会合并。 JavaScript [1, 2] + [3, 4] = "
根据我正在阅读的教程,如果您想创建一个包含 5 列和 3 行的表格来表示这样的数据... 45 4 34 99 56 3 23 99 43 2 1 1 0 43 67 ...它说你可以使用下
我通常使用 python 编写脚本/程序,但最近开始使用 JavaScript 进行编程,并且在使用数组时遇到了一些问题。 在 python 中,当我创建一个数组并使用 for x in y 时,我得
我有一个这样的数组: temp = [ 'data1', ['data1_a','data1_b'], ['data2_a','data2_b','data2_c'] ]; // 我想使用 toStr
rent_property (table name) id fullName propertyName 1 A House Name1 2 B
这个问题在这里已经有了答案: 关闭13年前。 Possible Duplicate: In C arrays why is this true? a[5] == 5[a] array[index] 和
使用 Excel 2013。经过多年的寻找和适应,我的第一篇文章。 我正在尝试将当前 App 用户(即“John Smith”)与他的电子邮件地址“jsmith@work.com”进行匹配。 使用两个
当仅在一个边距上操作时,apply 似乎不会重新组装 3D 数组。考虑: arr 1),但对我来说仍然很奇怪,如果一个函数返回一个具有尺寸的对象,那么它们基本上会被忽略。 最佳答案 这是一个不太理
我有一个包含 GPS 坐标的 MySQL 数据库。这是我检索坐标的部分 PHP 代码; $sql = "SELECT lat, lon FROM gps_data"; $stmt=$db->query
我需要找到一种方法来执行这个操作,我有一个形状数组 [批量大小, 150, 1] 代表 batch_size 整数序列,每个序列有 150 个元素长,但在每个序列中都有很多添加的零,以使所有序列具有相
我必须通过 url 中的 json 获取文本。 层次结构如下: 对象>数组>对象>数组>对象。 我想用这段代码获取文本。但是我收到错误 :org.json.JSONException: No valu
enter code here- (void)viewDidLoad { NSMutableArray *imageViewArray= [[NSMutableArray alloc] init];
知道如何对二维字符串数组执行修剪操作,例如使用 Java 流 API 进行 3x3 并将其收集回相同维度的 3x3 数组? 重点是避免使用显式的 for 循环。 当前的解决方案只是简单地执行一个 fo
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我有来自 ASP.NET Web 服务的以下 XML 输出: 1710 1711 1712 1713
如果我有一个对象todo作为您状态的一部分,并且该对象包含数组列表,则列表内部有对象,在这些对象内部还有另一个数组listItems。如何更新数组 listItems 中 id 为“poi098”的对
我想将最大长度为 8 的 bool 数组打包成一个字节,通过网络发送它,然后将其解压回 bool 数组。已经在这里尝试了一些解决方案,但没有用。我正在使用单声道。 我制作了 BitArray,然后尝试
我们的数据库中有这个字段指示一周中的每一天的真/假标志,如下所示:'1111110' 我需要将此值转换为 boolean 数组。 为此,我编写了以下代码: char[] freqs = weekday
我是一名优秀的程序员,十分优秀!