Numpy: How to cast string array to float while some of the elements contain extra quoted string












1















I am trying to convert string to float type by the following



X = arr[:,:-1].astype(np.float32)


However, error as below is rising



ValueError: could not convert string to float: '"53"'


I know this means I have some elements with extra quote in the array.
My problem is how should I solve this. How can I convert element '"53"' into 53 inside the array?



UPDATE 1:
Here is an example to reproduce



import numpy as np
a = np.array([['12','13'],['"53"','44']])
a = a.astype(np.float32)









share|improve this question




















  • 1





    It would be nice if you could provide a reproducible example.

    – Mad Physicist
    Nov 14 '18 at 5:17
















1















I am trying to convert string to float type by the following



X = arr[:,:-1].astype(np.float32)


However, error as below is rising



ValueError: could not convert string to float: '"53"'


I know this means I have some elements with extra quote in the array.
My problem is how should I solve this. How can I convert element '"53"' into 53 inside the array?



UPDATE 1:
Here is an example to reproduce



import numpy as np
a = np.array([['12','13'],['"53"','44']])
a = a.astype(np.float32)









share|improve this question




















  • 1





    It would be nice if you could provide a reproducible example.

    – Mad Physicist
    Nov 14 '18 at 5:17














1












1








1








I am trying to convert string to float type by the following



X = arr[:,:-1].astype(np.float32)


However, error as below is rising



ValueError: could not convert string to float: '"53"'


I know this means I have some elements with extra quote in the array.
My problem is how should I solve this. How can I convert element '"53"' into 53 inside the array?



UPDATE 1:
Here is an example to reproduce



import numpy as np
a = np.array([['12','13'],['"53"','44']])
a = a.astype(np.float32)









share|improve this question
















I am trying to convert string to float type by the following



X = arr[:,:-1].astype(np.float32)


However, error as below is rising



ValueError: could not convert string to float: '"53"'


I know this means I have some elements with extra quote in the array.
My problem is how should I solve this. How can I convert element '"53"' into 53 inside the array?



UPDATE 1:
Here is an example to reproduce



import numpy as np
a = np.array([['12','13'],['"53"','44']])
a = a.astype(np.float32)






python numpy






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 15 '18 at 2:25







Jumabek Alikhanov

















asked Nov 14 '18 at 5:00









Jumabek AlikhanovJumabek Alikhanov

1,06511018




1,06511018








  • 1





    It would be nice if you could provide a reproducible example.

    – Mad Physicist
    Nov 14 '18 at 5:17














  • 1





    It would be nice if you could provide a reproducible example.

    – Mad Physicist
    Nov 14 '18 at 5:17








1




1





It would be nice if you could provide a reproducible example.

– Mad Physicist
Nov 14 '18 at 5:17





It would be nice if you could provide a reproducible example.

– Mad Physicist
Nov 14 '18 at 5:17












2 Answers
2






active

oldest

votes


















4














Try stripping the double quotes from the array, then casting to float.



Like so:



arr = np.char.strip(arr, '"')
X = arr[:,:-1].astype(np.float32)





share|improve this answer

































    1














    You could also use numpy.char.replace() to perform element-wise string replace on an array of strings.




    Signature: np.char.replace(a, old, new, count=None)



    Docstring: For
    each element in a, return a copy of the string with all occurrences
    of substring old replaced by new. Calls str.replace element-wise.






    import numpy as np
    a = np.array([["12","13"],['"53"',"44"]])

    b = np.char.replace(a, '"', '')
    c = b.astype(np.float32)





    share|improve this answer























      Your Answer






      StackExchange.ifUsing("editor", function () {
      StackExchange.using("externalEditor", function () {
      StackExchange.using("snippets", function () {
      StackExchange.snippets.init();
      });
      });
      }, "code-snippets");

      StackExchange.ready(function() {
      var channelOptions = {
      tags: "".split(" "),
      id: "1"
      };
      initTagRenderer("".split(" "), "".split(" "), channelOptions);

      StackExchange.using("externalEditor", function() {
      // Have to fire editor after snippets, if snippets enabled
      if (StackExchange.settings.snippets.snippetsEnabled) {
      StackExchange.using("snippets", function() {
      createEditor();
      });
      }
      else {
      createEditor();
      }
      });

      function createEditor() {
      StackExchange.prepareEditor({
      heartbeatType: 'answer',
      autoActivateHeartbeat: false,
      convertImagesToLinks: true,
      noModals: true,
      showLowRepImageUploadWarning: true,
      reputationToPostImages: 10,
      bindNavPrevention: true,
      postfix: "",
      imageUploader: {
      brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
      contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
      allowUrls: true
      },
      onDemand: true,
      discardSelector: ".discard-answer"
      ,immediatelyShowMarkdownHelp:true
      });


      }
      });














      draft saved

      draft discarded


















      StackExchange.ready(
      function () {
      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53293444%2fnumpy-how-to-cast-string-array-to-float-while-some-of-the-elements-contain-extr%23new-answer', 'question_page');
      }
      );

      Post as a guest















      Required, but never shown

























      2 Answers
      2






      active

      oldest

      votes








      2 Answers
      2






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes









      4














      Try stripping the double quotes from the array, then casting to float.



      Like so:



      arr = np.char.strip(arr, '"')
      X = arr[:,:-1].astype(np.float32)





      share|improve this answer






























        4














        Try stripping the double quotes from the array, then casting to float.



        Like so:



        arr = np.char.strip(arr, '"')
        X = arr[:,:-1].astype(np.float32)





        share|improve this answer




























          4












          4








          4







          Try stripping the double quotes from the array, then casting to float.



          Like so:



          arr = np.char.strip(arr, '"')
          X = arr[:,:-1].astype(np.float32)





          share|improve this answer















          Try stripping the double quotes from the array, then casting to float.



          Like so:



          arr = np.char.strip(arr, '"')
          X = arr[:,:-1].astype(np.float32)






          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Nov 14 '18 at 5:12

























          answered Nov 14 '18 at 5:07









          Riley Steele ParsonsRiley Steele Parsons

          23016




          23016

























              1














              You could also use numpy.char.replace() to perform element-wise string replace on an array of strings.




              Signature: np.char.replace(a, old, new, count=None)



              Docstring: For
              each element in a, return a copy of the string with all occurrences
              of substring old replaced by new. Calls str.replace element-wise.






              import numpy as np
              a = np.array([["12","13"],['"53"',"44"]])

              b = np.char.replace(a, '"', '')
              c = b.astype(np.float32)





              share|improve this answer




























                1














                You could also use numpy.char.replace() to perform element-wise string replace on an array of strings.




                Signature: np.char.replace(a, old, new, count=None)



                Docstring: For
                each element in a, return a copy of the string with all occurrences
                of substring old replaced by new. Calls str.replace element-wise.






                import numpy as np
                a = np.array([["12","13"],['"53"',"44"]])

                b = np.char.replace(a, '"', '')
                c = b.astype(np.float32)





                share|improve this answer


























                  1












                  1








                  1







                  You could also use numpy.char.replace() to perform element-wise string replace on an array of strings.




                  Signature: np.char.replace(a, old, new, count=None)



                  Docstring: For
                  each element in a, return a copy of the string with all occurrences
                  of substring old replaced by new. Calls str.replace element-wise.






                  import numpy as np
                  a = np.array([["12","13"],['"53"',"44"]])

                  b = np.char.replace(a, '"', '')
                  c = b.astype(np.float32)





                  share|improve this answer













                  You could also use numpy.char.replace() to perform element-wise string replace on an array of strings.




                  Signature: np.char.replace(a, old, new, count=None)



                  Docstring: For
                  each element in a, return a copy of the string with all occurrences
                  of substring old replaced by new. Calls str.replace element-wise.






                  import numpy as np
                  a = np.array([["12","13"],['"53"',"44"]])

                  b = np.char.replace(a, '"', '')
                  c = b.astype(np.float32)






                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Nov 14 '18 at 6:02









                  NirmalNirmal

                  167111




                  167111






























                      draft saved

                      draft discarded




















































                      Thanks for contributing an answer to Stack Overflow!


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid



                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.


                      To learn more, see our tips on writing great answers.




                      draft saved


                      draft discarded














                      StackExchange.ready(
                      function () {
                      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53293444%2fnumpy-how-to-cast-string-array-to-float-while-some-of-the-elements-contain-extr%23new-answer', 'question_page');
                      }
                      );

                      Post as a guest















                      Required, but never shown





















































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown

































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown







                      Popular posts from this blog

                      Florida Star v. B. J. F.

                      Danny Elfman

                      Lugert, Oklahoma