无法在Python中更改numpy.array中的元素

问题描述 投票:0回答:1
import numpy as np
def function(1st_variable,2nd_variable):
    ratio = 1st_variable/ 2nd_variable

    y = np.power(ratio, 1.1)*0.79

    if y >= value*0.89:
        y = value*0.89

    return y

def calculate(array):
    pre_array = []
    m = len(array[:,0])
    for i in np.arange(m):
          if array[i,4] == 0:.
            array[i,2] = 0
            
          elif array[i,4] == 1:
            None

            
          elif array[i,4] == 2:
            
            live_value = array[i,5]
            new_value = function(array[i,2], live_value)

            print("New Ratio:",new_value,"\n")

            array[i,2] = new_value

            print("array:",array[i,2],"\n")

          elif array[i,4] == 3: 
            t= 5400
            array[i,2] = 0.79
            row = (array[i,0],array[i,1], array[i,2],array[i,4])
            pre_array.append(list(row))
            


array = np.array([[ 42280512, 1, 7, 0, 2, 10],
                  [ 42280233, 1, 8, 0, 2, 10],
                  [ 42280562, 1, 9, 0, 2, 10]])


我的期望: 新比率:0.533623485601259

数组:0.533623485601259

新比率:0.6180535097191309

数组:0.6180535097191309

新比率:0.7035481925846184

数组:0.7035481925846184


这就是我得到的:

新比率:0.533623485601259

数组:0

新比率:0.6180535097191309

数组:0

新比率:0.7035481925846184

数组:0

我的问题是,例如,我什至可以打印; “新比率:0.533623485601259”正确。我的数组的每一行都得到 array: 0

python arrays list numpy jupyter-notebook
1个回答
0
投票

好吧,现在我刚刚做了这个改变;在数组的末尾;

,dtype='float'
。 新代码是;

 import numpy as np
def function(st_variable,nd_variable):
    ratio_value = st_variable / nd_variable
    y = np.power(ratio_value, 1.1)*0.79

    if y >= ratio_value*0.89:
        y = ratio_value*0.89

    return y

def calculate(array):
    m = len(array[:,0])
    for i in np.arange(m):
 
          if array[i,4] == 2:
        
            new_value = function(array[i,2], 2)
            print("New Value:",new_value,"\n")

            array[i,2] = new_value
            print("array[i,2]:",array[i,2],"\n")

array = np.array([[ 42280512, 1, 7, 0, 2, 10],
                  [ 42280233, 1, 8, 0, 2, 10],
                  [ 42280562, 1, 9, 0, 2, 10]],dtype='float')

calculate(array)

它没有向我显示数字,它不等于零,因为它是一个整数数组......

输出为;

新值:3.115

数组[i,2]:3.115

新值:3.56

数组[i,2]:3.56

新值:4.005

数组[i,2]:4.00

© www.soinside.com 2019 - 2024. All rights reserved.