মান মূল্য: একটি অনুক্রমের সাথে একটি অ্যারের উপাদান সেট করা


183

এই পাইথন কোড:

import numpy as p

def firstfunction():
    UnFilteredDuringExSummaryOfMeansArray = []
    MeanOutputHeader=['TestID','ConditionName','FilterType','RRMean','HRMean',
                      'dZdtMaxVoltageMean','BZMean','ZXMean','LVETMean','Z0Mean',
                      'StrokeVolumeMean','CardiacOutputMean','VelocityIndexMean']
    dataMatrix = BeatByBeatMatrixOfMatrices[column]
    roughTrimmedMatrix = p.array(dataMatrix[1:,1:17])


    trimmedMatrix = p.array(roughTrimmedMatrix,dtype=p.float64)  #ERROR THROWN HERE


    myMeans = p.mean(trimmedMatrix,axis=0,dtype=p.float64)
    conditionMeansArray = [TestID,testCondition,'UnfilteredBefore',myMeans[3], myMeans[4], 
                           myMeans[6], myMeans[9], myMeans[10], myMeans[11], myMeans[12],
                           myMeans[13], myMeans[14], myMeans[15]]
    UnFilteredDuringExSummaryOfMeansArray.append(conditionMeansArray)
    secondfunction(UnFilteredDuringExSummaryOfMeansArray)
    return

def secondfunction(UnFilteredDuringExSummaryOfMeansArray):
    RRDuringArray = p.array(UnFilteredDuringExSummaryOfMeansArray,dtype=p.float64)[1:,3]
    return

firstfunction()

এই ত্রুটি বার্তাটি ছুড়ে ফেলে:

File "mypath\mypythonscript.py", line 3484, in secondfunction
RRDuringArray = p.array(UnFilteredDuringExSummaryOfMeansArray,dtype=p.float64)[1:,3]
ValueError: setting an array element with a sequence.

উপরের ভাঙা কোডটিতে সমস্যা সংশোধন করতে কেউ আমাকে কী করতে পারে তা যাতে কোনও ত্রুটি বার্তা ছুঁড়ে দেওয়া বন্ধ করে দেয়?


সম্পাদনা: ম্যাট্রিক্সের বিষয়বস্তু পেতে আমি একটি মুদ্রণ কমান্ড করেছি এবং এটি এটি মুদ্রিত হয়েছে:

আনফিল্টারডডিউরিংএক্সসামারীঅফম্যান্সআর্রে হ'ল:

[['TestID', 'ConditionName', 'FilterType', 'RRMean', 'HRMean', 'dZdtMaxVoltageMean', 'BZMean', 'ZXMean', 'LVETMean', 'Z0Mean', 'StrokeVolumeMean', 'CardiacOutputMean', 'VelocityIndexMean'],
[u'HF101710', 'PreEx10SecondsBEFORE', 'UnfilteredBefore', 0.90670000000000006, 66.257731979420001, 1.8305673000000002, 0.11750000000000001, 0.15120546389880002, 0.26870546389879996, 27.628261216480002, 86.944190346160013, 5.767261352345999, 0.066259118585869997],
[u'HF101710', '25W10SecondsBEFORE', 'UnfilteredBefore', 0.68478571428571422, 87.727887206978565, 2.2965444125714285, 0.099642857142857144, 0.14952476549885715, 0.24916762264164286, 27.010483303721429, 103.5237336525, 9.0682762747642869, 0.085022572648242867],
[u'HF101710', '50W10SecondsBEFORE', 'UnfilteredBefore', 0.54188235294117659, 110.74841107829413, 2.6719262705882354, 0.077705882352917643, 0.15051306356552943, 0.2282189459185294, 26.768787504858825, 111.22827075238826, 12.329456404418824, 0.099814258468417641],
[u'HF101710', '75W10SecondsBEFORE', 'UnfilteredBefore', 0.4561904761904762, 131.52996981880955, 3.1818159523809522, 0.074714285714290493, 0.13459344175047619, 0.20930772746485715, 26.391156337028569, 123.27387909873812, 16.214243779323812, 0.1205685359981619]]

আমার কাছে 5 কলামের মতো 13 কলামের ম্যাট্রিক্সের মতো মনে হচ্ছে, যদিও স্ক্রিপ্টের মাধ্যমে যখন বিভিন্ন ডেটা চালানো হয় তখন সারিগুলির সংখ্যা পরিবর্তনশীল। এই একই তথ্য যা আমি এতে যুক্ত করছি।

সম্পাদনা 2 : তবে স্ক্রিপ্টটি একটি ত্রুটি ছুড়ে দিচ্ছে। সুতরাং আমি মনে করি না যে আপনার ধারণাটি এখানে যে সমস্যাটি ঘটছে তা ব্যাখ্যা করে। জদিও ধন্যবাদ. অন্য কোন ধারণা?


সম্পাদনা 3:

এফওয়াইআই, যদি আমি কোডের এই লাইনটি প্রতিস্থাপন করি:

    RRDuringArray = p.array(UnFilteredDuringExSummaryOfMeansArray,dtype=p.float64)[1:,3]

পরিবর্তে এটি দিয়ে:

    RRDuringArray = p.array(UnFilteredDuringExSummaryOfMeansArray)[1:,3]

তারপরে স্ক্রিপ্টের সেই অংশটি ত্রুটি না ছুঁড়ে নিখুঁতভাবে কাজ করে, তবে তারপরে কোডের এই লাইনটি লাইনটির আরও নিচে:

p.ylim(.5*RRDuringArray.min(),1.5*RRDuringArray.max())

এই ত্রুটিটি ছুড়ে ফেলে:

File "mypath\mypythonscript.py", line 3631, in CreateSummaryGraphics
  p.ylim(.5*RRDuringArray.min(),1.5*RRDuringArray.max())
TypeError: cannot perform reduce with flexible type

সুতরাং আপনি দেখতে পাচ্ছেন যে ম্যাটপ্ল্লোলিবে ইলিম ব্যবহার করতে সক্ষম হতে আমার ডেটা টাইপ নির্দিষ্ট করতে হবে, তবে তথ্যের ধরণ উল্লেখ করে এই পোস্টটি আরম্ভ করা ত্রুটি বার্তা নিক্ষেপ করছে।


কেউ কি এই প্রশ্ন থেকে সমস্ত অপ্রাসঙ্গিক বিবরণ সরাতে চান?
ক্রিস_আরেন্ডস

উত্তর:


253

আপনি যে কোডটি আমাদের দেখিয়েছেন, কেবল সেগুলি থেকে আমরা বলতে পারি যে আপনি একটি তালিকা থেকে একটি অ্যারে তৈরি করার চেষ্টা করছেন যা কোনও বহুমাত্রিক অ্যারের মতো আকারের নয়। উদাহরণ স্বরূপ

numpy.array([[1,2], [2, 3, 4]])

অথবা

numpy.array([[1,2], [2, [3, 4]]])

এই ত্রুটি বার্তাটি উত্পন্ন করবে, কারণ ইনপুট তালিকার আকৃতিটি কোনও (সাধারণীকৃত) "বাক্স" নয় যা বহুমাত্রিক অ্যারেতে রূপান্তরিত হতে পারে। সুতরাং সম্ভবত UnFilteredDuringExSummaryOfMeansArrayবিভিন্ন দৈর্ঘ্যের ক্রম রয়েছে।

সম্পাদনা করুন : এই ত্রুটি বার্তার আর একটি সম্ভাব্য কারণ ধরণের অ্যারেতে উপাদান হিসাবে একটি স্ট্রিং ব্যবহার করার চেষ্টা করছে float:

numpy.array([1.2, "abc"], dtype=float)

আপনি নিজের সম্পাদনা অনুযায়ী এটি চেষ্টা করছেন। আপনি যদি সত্যিই একটি নুমপি অ্যারে পেতে চান যা উভয় স্ট্রিং এবং ভাসমান থাকে, আপনি dtype ব্যবহার করতে পারেন object, যা অ্যারেটিকে নির্বিচার পাইথন অবজেক্টগুলি ধরে রাখতে সক্ষম করে:

numpy.array([1.2, "abc"], dtype=object)

আপনার কোডটি কী সম্পাদন করবে তা না জেনে, আপনি কী চান তা যদি আমি বিচার করতে পারি না।


1
ধন্যবাদ, তবে আমি উত্তরটি মনে করি না। আমি অ্যারের সামগ্রীগুলি যুক্ত করেছি যখন এটি উপরে ত্রুটি ছুঁড়ে ফেলেছে। এবং এটি আমার কাছে মনে হয় এটি একটি বাক্স যখন আমি নোটপ্যাডে আটকান এবং এটি লাইন লাইন পরীক্ষা করি। অন্য কোন ধারণা?
মেডিক্যালমাথ

2
আপনার সম্পাদনাটি আমার সমস্যার সমাধান করেছে বলে মনে হচ্ছে। আমার dtype = অবজেক্ট সেট করা দরকার। আপনাকে অনেক ধন্যবাদ.
মেডিক্যালমাথ

এই প্রশ্নের সম্পূর্ণ উত্তর দেওয়া হয়েছে।
মেডিকেলমাথ


47

পাইথন মান মূল্য:

ValueError: setting an array element with a sequence.

এর অর্থ কী তা বোঝায়, আপনি একটি সংখ্যার স্লটে সংখ্যার ক্রম ক্র্যাম করার চেষ্টা করছেন। এটি বিভিন্ন পরিস্থিতিতে নিক্ষেপ করা যেতে পারে।

1. যখন আপনি একটি অজগর টিপল বা তালিকাটি একটি অসাধারণ অ্যারে উপাদান হিসাবে ব্যাখ্যা করার জন্য পাস করেন:

import numpy

numpy.array([1,2,3])               #good

numpy.array([1, (2,3)])            #Fail, can't convert a tuple into a numpy 
                                   #array element


numpy.mean([5,(6+7)])              #good

numpy.mean([5,tuple(range(2))])    #Fail, can't convert a tuple into a numpy 
                                   #array element


def foo():
    return 3
numpy.array([2, foo()])            #good


def foo():
    return [3,4]
numpy.array([2, foo()])            #Fail, can't convert a list into a numpy 
                                   #array element

২. একটি অদ্ভুত অ্যারে দৈর্ঘ্যে> 1 কে ছাঁটাই করার চেষ্টা করে:

x = np.array([1,2,3])
x[0] = np.array([4])         #good



x = np.array([1,2,3])
x[0] = np.array([4,5])       #Fail, can't convert the numpy array to fit 
                             #into a numpy array element

একটি অদ্ভুত অ্যারে তৈরি করা হচ্ছে, এবং আঙ্গুল কীভাবে একক উপাদান স্লটে মাল্টিভ্যালিউড টিপলস বা অ্যারে ক্র্যাম করবেন তা জানে না। এটি কোনও একক সংখ্যার মূল্যায়নের জন্য আপনি যা কিছু দেন তা প্রত্যাশা করে, যদি তা না হয় তবে নিম্পি প্রতিক্রিয়া জানায় যে এটি একটি ক্রম দিয়ে অ্যারে উপাদান কীভাবে সেট করবেন তা জানেন না।


খুব সুন্দর ব্যাখ্যা
তেজাস শেঠি

15

আমার ক্ষেত্রে, আমি এই ত্রুটিটি টেনসরফ্লোতে পেয়েছি, কারণটি হ'ল আমি বিভিন্ন দৈর্ঘ্য বা সিকোয়েন্স সহ একটি অ্যারে ফিড দেওয়ার চেষ্টা করছিলাম:

উদাহরণ:

import tensorflow as tf

input_x = tf.placeholder(tf.int32,[None,None])



word_embedding = tf.get_variable('embeddin',shape=[len(vocab_),110],dtype=tf.float32,initializer=tf.random_uniform_initializer(-0.01,0.01))

embedding_look=tf.nn.embedding_lookup(word_embedding,input_x)

with tf.Session() as tt:
    tt.run(tf.global_variables_initializer())

    a,b=tt.run([word_embedding,embedding_look],feed_dict={input_x:example_array})
    print(b)

এবং যদি আমার অ্যারে হয়:

example_array = [[1,2,3],[1,2]]

তাহলে আমি ত্রুটি পেয়ে যাব:

ValueError: setting an array element with a sequence.

তবে আমি যদি প্যাডিং করি তবে:

example_array = [[1,2,3],[1,2,0]]

এখন এটি কাজ করছে।


আমি পাইকিউডিএ ব্যবহার করছিলাম এবং দুর্ঘটনাক্রমে নমপি অ্যারেতে একটি জিপুয়ারির উপাদান নির্ধারিত হয়েছিল । আমি একই ত্রুটি পেয়েছি।
তীর্থা আর

@ আদিত্য উরা, কীভাবে এই প্যাডিং পরিচালনা করবেন, আপনি কি কিছু উল্লেখ করতে পারেন?
পরী

7

যারা নিম্পিতে একই ধরণের সমস্যা নিয়ে সমস্যায় পড়ছেন তাদের পক্ষে খুব সহজ সমাধান হ'ল:

dtype=objectমান নির্ধারণের জন্য একটি অ্যারে সংজ্ঞায়িত করার সময় সংজ্ঞা দেওয়া হচ্ছে। এই ক্ষেত্রে:

out = np.empty_like(lil_img, dtype=object)

3
Editগৃহীত উত্তরের অংশ থেকে এটি কীভাবে আলাদা ।
সত্যম্বে জয়তে

মোহন মত কাজ!
mcagriardic

5

আমার ক্ষেত্রে সমস্যাটি ছিল অন্যরকম। আমি int এর তালিকাগুলির তালিকাগুলিকে অ্যারেতে রূপান্তর করার চেষ্টা করছিলাম। সমস্যাটি ছিল যে অন্যদের চেয়ে আলাদা দৈর্ঘ্যের একটি তালিকা ছিল। আপনি যদি এটি প্রমাণ করতে চান তবে আপনাকে অবশ্যই:

print([i for i,x in enumerate(list) if len(x) != 560])

আমার ক্ষেত্রে, দৈর্ঘ্য রেফারেন্স ছিল 560।


2

আমার ক্ষেত্রে, সমস্যাটি ছিল একটি ডেটাফ্রেম এক্সের স্ক্র্যাপপ্লট [[]:

ax.scatter(X[:,0],X[:,1],c=colors,    
       cmap=CMAP, edgecolor='k', s=40)  #c=y[:,0],

#ValueError: setting an array element with a sequence.
#Fix with .toarray():
colors = 'br'
y = label_binarize(y, classes=['Irrelevant','Relevant'])
ax.scatter(X[:,0].toarray(),X[:,1].toarray(),c=colors,   
       cmap=CMAP, edgecolor='k', s=40)

আরও কিছু ব্যাখ্যা সুন্দর হবে।
তেজাস শেঠি

1
মান ত্রুটির অর্থ আমরা একটি এন-এলিমেন্ট অ্যারে (সিকোয়েন্স) একটি একক সংখ্যক স্লটে লোড করার চেষ্টা করছি যার মধ্যে কেবল একটি ফ্লোট রয়েছে। অতএব, আপনি একটি অনুক্রমের সাথে একটি অ্যারের উপাদান সেট করার চেষ্টা করছেন। .Toarray () এর সাহায্যে আমরা এটিকে ক্রমের একটি অ্যারেতে প্রসারিত করি। toarray () একটি নাদার্রে ফেরত দেয়;
ম্যাক্স ক্লিনার

0

যখন আকৃতিটি নিয়মিত না থাকে বা উপাদানগুলির বিভিন্ন ধরণের ডেটা থাকে, তখন dtypeযুক্তি কেবল এনপি.আরেতে প্রেরণ করা যায় object

import numpy as np

# arr1 = np.array([[10, 20.], [30], [40]], dtype=np.float32)  # error
arr2 = np.array([[10, 20.], [30], [40]])  # OK, and the dtype is object
arr3 = np.array([[10, 20.], 'hello'])     # OK, and the dtype is also object

`


তাই আপনাকে স্বাগতম। এই প্রশ্নটি খুব পুরানো এবং আপনার উত্তরটি অন্যদের মধ্যে কমপক্ষে একটির সদৃশ বলে মনে হচ্ছে। যদি আপনার উত্তর আসলে আলাদা হয় তবে আরও কিছু বিশদ যুক্ত করার চেষ্টা করুন যা কীভাবে তা ব্যাখ্যা করে।
জেনস এরিচ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.