GVKun编程网logo

如何强制以正常方式而不是科学计数法显示ndarray?(强制方法是什么意思)

15

本文将为您提供关于如何强制以正常方式而不是科学计数法显示ndarray?的详细介绍,我们还将为您解释强制方法是什么意思的相关知识,同时,我们还将为您提供关于c#科学计数法值转换成正常值,返回字符串、j

本文将为您提供关于如何强制以正常方式而不是科学计数法显示ndarray?的详细介绍,我们还将为您解释强制方法是什么意思的相关知识,同时,我们还将为您提供关于c# 科学计数法值转换成正常值,返回字符串、java 如何实现普通计数法转化为科学计数法?、java中将科学计数法转换普通计数法的简单方法、jsp避免科学计数法显示较大数值的实用信息。

本文目录一览:

如何强制以正常方式而不是科学计数法显示ndarray?(强制方法是什么意思)

如何强制以正常方式而不是科学计数法显示ndarray?(强制方法是什么意思)

我正在尝试在屏幕上打印ndarray。但是python总是以科学计数法显示它,我不喜欢。对于标量,我们可以使用

>>> print ''%2.4f'' %(7.47212470e-01)0.7472

但是如何为这样的numpy.ndarray做到这一点:

[[  7.47212470e-01   3.71730070e-01   1.16736538e-01   1.22172891e-02] [  2.79279640e+00   1.31147152e+00   7.43946656e-02   3.08162255e-02] [  6.93657970e+00   3.14008688e+00   1.02851599e-01   3.96611266e-02] [  8.49295040e+00   3.94730094e+00   8.99398479e-02   7.60969188e-02] [  2.01849250e+01   8.62584092e+00   8.75722302e-02   6.17109672e-02] [  2.22570710e+01   1.00291292e+01   1.20918359e-01   1.07250131e-01] [  2.82496660e+01   1.27882133e+01   1.08438172e-01   1.58723714e-01] [  5.89170270e+01   2.55268510e+01   1.31990966e-01   1.61599514e-01]]

.astype(float)方法不会更改结果,.round(4)返回:

[[  7.47200000e-01   3.71700000e-01   1.16700000e-01   1.22000000e-02] [  2.79280000e+00   1.31150000e+00   7.44000000e-02   3.08000000e-02] [  6.93660000e+00   3.14010000e+00   1.02900000e-01   3.97000000e-02] [  8.49300000e+00   3.94730000e+00   8.99000000e-02   7.61000000e-02] [  2.01849000e+01   8.62580000e+00   8.76000000e-02   6.17000000e-02] [  2.22571000e+01   1.00291000e+01   1.20900000e-01   1.07300000e-01] [  2.82497000e+01   1.27882000e+01   1.08400000e-01   1.58700000e-01] [  5.89170000e+01   2.55269000e+01   1.32000000e-01   1.61600000e-01]]

我只想要0.7472 0.3717等。

答案1

小编典典

numpy.set_string_function函数可用于更改数组的字符串表示形式。

您还可以使用numpy.set_print_options更改默认使用的精度,并关闭以科学计数法报告小数字的功能。

从以下示例中set_print_options

>>> np.set_printoptions(precision=4)>>> print np.array([1.123456789])[ 1.1235]

c# 科学计数法值转换成正常值,返回字符串

c# 科学计数法值转换成正常值,返回字符串

/// <summary>
        ///  科学计数法值转换成正常值
        /// </summary>
        /// <param name="value"></param>
        /// <returns></returns>
        private object ValueScientificNotationConvert(JToken value)
        {

            if (value == null) return 0;
            string strData = "";
            if (value.Type == JTokenType.String)
            {
                strData = value.ToString();
            }
            else
            {
                strData = value.ToString(Formatting.Indented);
            }
            Decimal dData = 0.0M;
            try
            {
                if (strData.ToUpper().Contains("E"))
                {
                    System.Globalization.NumberStyles sty = System.Globalization.NumberStyles.AllowExponent | System.Globalization.NumberStyles.AllowDecimalPoint;
                    try
                    {
                        dData = Decimal.Parse(strData, sty);
                    }
                    catch (Exception ex)
                    {
                        //转换成decimal溢出时,转换成字符串
                        if (ex is OverflowException)
                            return ValueScientificNotationConvert1(value);
                    }


                }
                else
                {
                    if (!decimal.TryParse(strData, out dData))
                        return null;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return dData;
        }

 


/// <summary> /// 科学计数法值转换成正常值字符串 /// </summary> /// <param name="value"></param> /// <returns></returns> public string ValueScientificNotationConvert1(JToken value) { if (value == null) return ""; string s = ""; if (value.Type == JTokenType.String) { s = value.ToString(); } else { s = value.ToString(Formatting.Indented); } string num = String.Empty; string[] arr = s.Split(''E''); bool isPart1Double = double.TryParse(arr[0], out var part1); int decimalDigitCountInPart1 = arr[0].IndexOf(''.'') == -1 ? 0 : arr[0].Length - 1 - arr[0].IndexOf(''.''); string newPart2 = arr.ElementAtOrDefault(1); bool isPart2Int = int.TryParse(newPart2, out var part2); if (arr.Length == 1) { if (isPart1Double) num = part1.ToString(); } if (arr.Length == 2) { if (part2 < 0 || part2 - decimalDigitCountInPart1 < 0) { if (isPart1Double && isPart2Int) num = Decimal.Parse((part1 * Math.Pow(10, part2)).ToString(), System.Globalization.NumberStyles.Float).ToString(); // 此时Math.Pow(10, part2)并不会越界,故可使用Decimal.Parse从scientific num转换为real num } else if (part2 - decimalDigitCountInPart1 >= 0) { num = part1.ToString().Replace(".", "") + new String(''0'', part2 - decimalDigitCountInPart1 + 1); // 避免越界,此处使用字符串拼接代替Math.Pow(10, part2),拼接还可用StringBuilder的append方法 } } return num; }

 

java 如何实现普通计数法转化为科学计数法?

java 如何实现普通计数法转化为科学计数法?

在Java中如何实现指定有效位数之后将 普通计数法表示的浮点数转化为科学计数法表示的浮点数,比如将 0.0002345保留三位有效数字并采用科学计数法表示为 2.34-E4 ?

java中将科学计数法转换普通计数法的简单方法

java中将科学计数法转换普通计数法的简单方法

今天发现数据库里汇总的数据有点大,一输出就被自动转化成科学计数法了。后来发现是转换字符串的方法有问题。如下:

String a = "11234567.89";

BigDecimal db = new BigDecimal(a);

System.out.println("科学计数:" + db.toString());

System.out.println("普通计数:" + db.toPlainString());

输出:

科学计数:1.123456789E7

普通计数:11234567.89

以上这篇java中将科学计数法转换普通计数法的简单方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程小技巧。

jsp避免科学计数法显示较大数值

jsp避免科学计数法显示较大数值

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

<fmt:formatNumber value="${cardPayBank.dayCurAmt}" pattern="0.00"/>

今天的关于如何强制以正常方式而不是科学计数法显示ndarray?强制方法是什么意思的分享已经结束,谢谢您的关注,如果想了解更多关于c# 科学计数法值转换成正常值,返回字符串、java 如何实现普通计数法转化为科学计数法?、java中将科学计数法转换普通计数法的简单方法、jsp避免科学计数法显示较大数值的相关知识,请在本站进行查询。

本文标签: